修改註冊表實現程序開機自啓動

註冊表簡介

何爲註冊表

註冊表相當於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();
發佈了65 篇原創文章 · 獲贊 60 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章