1. 程式人生 > >修改登錄檔實現程式開機自啟動

修改登錄檔實現程式開機自啟動

修改登錄檔實現程式開機自啟動

2017年09月27日 10:55:37

閱讀數:335

登錄檔簡介

何為登錄檔

登錄檔相當於Windows下的一個龐大的層次性資料庫. 
基本上有責系統所有的配置資訊

登錄檔是windows作業系統中的一個核心資料庫,其中存放著各種引數,直接控制著windows的啟動、硬體驅動程式的裝載以及一些windows應用程式的執行,從而在整個系統中起著核心作用。 
以上是引用百科的話

登錄檔組成

登錄檔由

  • 鍵(rootkey)(也叫主鍵或稱“項”)
  • 子鍵(subkey)(子項)
  • 值項(value)構成。

一個鍵就是分支中的一個資料夾,而子鍵就是這個資料夾當中的子資料夾,子鍵同樣它也是一個鍵。 
一個值項則是一個鍵的當前定義,由名稱、資料型別以及分配的值組成。 
一個鍵可以有一個或多個值,每個值的名稱各不相同,如果一個值的名稱為空,則該值為該鍵的預設值。


五大根鍵

  • HKEY_USERS 
    儲存了存放在本地計算機口令列表中的使用者標識和密碼列表

  • HKEY_CURRENT_USER 
    該根鍵包含了本地工作站中存放的當前登入的使用者資訊

  • HKEY_CURRENT_CONFIG 
    該根鍵存放著當前使用者桌面配置的資料

  • HKEY_CLASSES_ROOT 
    該根鍵根據windows作業系統中所安裝的應用程式的副檔名,來指定檔案型別。

  • HKEY_LOCAL_MACHINE 
    該根鍵存放本地計算機的硬體資訊,(我們的自啟動資訊就在此)

實戰篇

(上面做了個這樣的簡介,現在開始實戰操作了)

原理很簡單 
把我們的鍵值資訊寫到下面的鍵裡就好了 
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run(這個鍵裡就是)

1. 本軟體自動啟動: 

       CString currentPath;
       GetModuleFileName(NULL,currentPath.GetBuffer(
               MAX_PATH),MAX_PATH); 
        //上面獲取當前全路徑
       CRegKey reg;        //定義登錄檔物件
        //還是atl好用

       reg.Open(HKEY_LOCAL_MACHINE,"Software\\Microsoft
                   \\Windows\\CurrentVersion\\Run");
        //成功返回ERROE_SUCCESS
       reg.Create(reg.m_hKey,L"TEST");
        //這裡建立子健也就是一個資料夾,
        //m_hKey其實就是開啟的父鍵的返回的handle
       reg.SetValue(currentPath,L"AUTORUN");

(2)刪除自動啟動:
       CRegKey rk;
       LPCTSTR subKey="TEST";
       LPCTSTR KeyValue="*.exe";
       LPCTSTR lp="Software\\Microsoft\\Windows\\CurrentVersion\\Run\\TEST\\";
    if(rk.Open(HKEY_LOCAL_MACHINE,lp)==ERROR_SUCCESS)
            if(rk.DeleteValue(KeyValue)==ERROR_SUCCESS)
       {
           //Do something
    }
    rk.Close();