注冊表是干什么的呀


認識並操作注冊表
----------------------------------------------------------------------------------------
①、注冊表簡介:

注冊表到底是個什么東西?
注冊表實際上是一個管理配置系統運行參數的核心數據庫,它記錄了安裝軟件與運行程序的關聯關系,計算機的硬件配置等信息。可以說計算機上所有針對硬件、軟件、網絡的操作都是源於注冊表的。
可以使用 regedit.exe 這個系統提供的注冊表編輯器去管理編輯注冊表,他只是一個編輯器不是注冊表的文件。

注冊表內的所有信息都是存放在 System.dat、User.dat 文件中的,其中 System.dat 文件包含了所有的硬件信息和軟件信息,User.dat 包含了用戶信息。
如果在系統中配置了兩個或兩個以上的用戶,在 Windows\Profile\用戶名目錄 中還存放有各個用戶的 User.dat 文件,這些文件都是二進制數據文件,
修改注冊表實際上就是對上述的三個文件進行修改。但是,我們不能對這些二進制數據文件進行直接修改,而必須要借助於注冊表編輯器。

注冊表編輯器實際上就是我們查看和修改注冊表文件的圖形界面。

Windows XP 注冊表的結構
  Windows XP的注冊表同樣是以樹形結構組織的。它由兩個注冊表子目錄樹組成:HKEY_LOCAL_MACHINE 和 HKEY_USERS。
但是為了使注冊表中的信息更易於查找,Windows XP 預定義了五個子目錄樹。

鍵:根鍵,子鍵

鍵值:鍵值項 ,鍵值類型,鍵值數據
===================================================
②、常用的注冊表的鍵值類型:
其他不常用格式具體見MSDN:
REG_BINARY:未處理的二進制數據。多數硬件組件信息都是以二進制存儲,而以十六進制格式顯示在注冊表編輯器中;
REG_WORD:數據由4字節長的數表示。許多設備驅動程序和服務的參數是這種類型,並在注冊表編輯器中以二進制、十六進制或十進制的格式顯示;
REG_EXPAND_SZ:長度可變的數據串。該數據類型包含在程序或服務使用該數據時確定的變量
REG_MULTI_SZ:多重字符串。其中包含格式可被用戶讀取的列表。項用空格、逗號、或其他標記分開;
REG_SZ:固定長度的文本串;

注冊表示例:
1、系統啟動項:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
2、文件類型注冊,為指定的文件類型關聯打開的可執行程序;
===================================================
③、幾個根鍵的用途說明:

HKEY_LOCAL_MACHINE 根鍵中包含了操作系統、安裝軟件及硬件的相關信息。如計算機總線類型、系統可用內存、當前裝載了哪些設備驅動程序以及啟動控制數據等。
實際上,HKEY_LOCAL_MACHINE 根鍵保存着注冊表中的大部分信息,而另外4個根鍵都是其子鍵的別名。

HKEY_CURRENT_USER 根鍵包含這當前登錄到計算機上的用戶的配置文件。其子鍵包含着環境變量、個人程序組、桌面設置、網絡連接、打印機和應用程序首選項等信息。
計算機把當前用戶的信息映射到這個根鍵下,若未激活用戶配置,則它指向子鍵 HKEY_USERS\.DEFAULT。

HKEY_CLASSES_ROOT 根鍵記錄的是系統中各類文件與其應用程序之間的對應關系,即記錄了某類文件和打開該類文件的應用程序之間的相互關聯關系。
HKEY_CLASSES_ROOT 根鍵是 HKEY_LOCAL_MACHINE\SOFTWARE\Classes 的快捷方式,是注冊表的一個最大分支,包括了成千上萬的與程序、文件相關聯的鍵和值以及ActiveX類的定義等內容。

HKEY_USERS 根鍵下包含了計算機的所有用戶的信息。用戶根據個人愛好設置的諸如桌面、背景、開始菜單程序項、應用程序快捷鍵、顯示字體、屏幕節電設置等信息均記錄在這個跟建中
HKEY_CURRENT_USER 也是 HKEY_USERS 其中的的一個快捷鍵部分。

HKEY_CURRENT_CONFIG 根鍵包含的主要內容是計算機的當前配置情況,如顯示器、打印機等可選外部設備及其設置信息等。
===================================================
④、注冊表的鍵的打開與關閉:

注冊表的鍵的打開:RegOpenKey 與 RegOpenKeyEx
LONG WINAPI RegOpenKeyEx(
__in HKEY hKey,
__in LPCTSTR lpSubKey,
DWORD ulOptions,
__in REGSAM samDesired,
__out PHKEY phkResult
);

注冊表的關閉:RegCloseKey

void CRegTestDlg::OnBnClickedBtn()
{
HKEY hKey = NULL;
TCHAR *lpszSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszSubKey, 0, KEY_ALL_ACCESS, &hKey);
if (lRet == ERROR_SUCCESS){
MessageBox(_T("打開成功!"));
}else{
MessageBox(_T("打開失敗!"));
}

RegCloseKey(hKey);
}
===================================================
⑤、注冊表的鍵的創建與刪除:

注冊表的鍵創建:RegCreateKey 與 RegCreateKeyEx (也可以打開指定的鍵,同時可以創建n層深的一個子鍵)
LONG WINAPI RegCreateKeyEx(
__in HKEY hKey,
__in LPCTSTR lpSubKey,
DWORD Reserved,
__in LPTSTR lpClass,
__in DWORD dwOptions,
__in REGSAM samDesired,
__in LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__out PHKEY phkResult,
__out LPDWORD lpdwDisposition
);

注冊表的鍵刪除:RegDeleteKey 與 RegDeleteKeyEx(x64)
LONG WINAPI RegDeleteKey(
__in HKEY hKey,
__in LPCTSTR lpSubKey
);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM