教程詳情
- 教程名字:vc驿站vc++高級班之注冊表篇系列教程
- 教程大小:58.06 MB
- 作者:vc驿站
大家好,我是Syc
今天給大家做的教程是:
vc++高級班之注冊表篇[1]---認識并操作注冊表
----------------------------------------------------------------------------------------
①、注冊表簡介:
注冊表到底是個什麽東西?
注冊表實際上是一個管理配置系統運行參數的核心數據庫,它記錄了安裝軟件與運行程序的關聯關系,計算機的硬件配置等信息。可以說計算機上所有針對硬件、軟件、網絡的操作都是源于注冊表的。
可以使用 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
);
===================================================
※※※ 小作業:練習本節課介紹的相關 API 函數的使用以及相關的 Shell 注冊表操作函數!
------------------------------------- End -------------------------------------------
教程截圖
教程下載
原文鏈接:【教程寶盒網】 https://www.jc-box.com/190.html,轉載請注明出處。
請先
!