《解讀window核心編程》 之 註冊表
1 註冊表的作用及組織形式
Windows系統使用註冊表來存儲系統和應用程序配置數據。非常多系統和應用程序重要的配置的信息都存儲在註冊表中。
註冊表是一種以樹型結構組織的數據庫。樹的每個節點稱
作鍵(key),每一個節點能夠包括若幹子鍵,鍵能夠存儲數據,存儲的數據稱作鍵值。一個鍵不管其是否有子鍵,都能夠有鍵值。一個鍵能夠有非常多個鍵值,每一個鍵值都有一個名字。包括若幹數據。所包括的數據類型能夠有非常多種,表10.1列出了註冊表數據類型。
系統自帶的註冊表編輯器(regedit.exe)能夠列舉、查看、改動、添加、刪除鍵和子鍵、鍵值。
2.鍵、子鍵、鍵屬性及鍵值的相關操作
在對註冊表鍵進行操作前,須要使用API函數RegOpenKey、RegOpenKeyEx打開鍵。
在打開鍵後。假設須要創建新的鍵,使用API函數RegCreateKey、RegCreateKeyEx。
這兩組函數都將返回鍵的句柄(HKEY類型)。在得到鍵的句柄後,能夠對鍵進行操作。
創建子鍵使用前述RegCreateKey、Reg CreateKeyEx API函數;刪除鍵使RegDeleteKey、RegDeleteKeyEx函數,RegQueryInfoKey API函數獲取鍵多方面的信息,包含鍵值、子鍵等;獲取和設置鍵值還能夠使用RegGetValue、RegQueryValueEx、RegSetValueEx、RegQueryMultipleValues等函數;刪除指定的鍵值使用RegDeleteValue函數;假設須要遍歷子鍵和鍵值,能夠使用API函數RegEnumKeyEx和RegEnumValue函數。
3 列舉註冊表項及鍵值
遍歷子鍵和鍵值能夠使用API函數RegEnumKeyEx和RegEnumValue函數。RegQueryInfoKey。RegEnumKeyEx和RegEnumValue相配合能夠完畢對一個鍵的全部子鍵及鍵值的列舉。
4 通過註冊表設置一個自啟動的程序
程序的自啟動有非常多種方法。註冊表是當中最經常使用的一種,有多個鍵具有這樣的功能。最經常使用的有:HKEY_LO CAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,僅僅需設置REG二SZ類型的鍵值,將值設置為程序的路徑就可以使用程序在系統啟動時自啟動。
假設僅僅須要在下次系統啟動時自啟動一次,那麽能夠設置鍵HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce的鍵值。
5 設置隨程序啟動而啟動的調試器(不論什麽程序)
本節將介紹怎樣在程序啟動時載入調試器(讀者也能夠用於設置自啟動程序)。“HKEY_LOCAL_MACHINE\SOFTWAREYMicrosoft,\Windows NT\CurrentVersion\Image File
Execution Options”下的子鍵能夠用於指定啟動調試器。
如須要調試os_info.exe,在“Image FileExecution Options”鍵下創建子鍵“os_info.exe”。然後創建鍵值,名為“Debugger”,類型為REG_SZ。數據為啟動調試器的命令行。這裏指向Windbg,如:“C:\Program Files\Debugging Tools forWindows\windbg.exe”(能夠是不論什麽可執行文件,比方notepad.exe。在載入鍵名稱程序模塊時,會首先啟動“Debugger”鍵值指定的應用程序,並以鍵名指向的可執行程序為參數)。執行os_info.exe就會啟動Windbg執行調試。
6.指定程序崩潰實時調試器
能夠通過註冊表指定實時調試器,比方指定為WinDBG或OllyDBG等調試器。
指定實時調試器的方法為指定註冊表鍵“HKEY LOCAL MACHINE\SOFTWARE\Microsoft\ Windows
NT\CurrentVersion\AeDebug”的“Debugger”鍵值。
《解讀window核心編程》 之 註冊表