註冊表

打開註冊表辦法:在運行窗口輸入regedit數組

註冊表相關函數:緩存

RegOpenKeyEx: 打開一個指定的註冊表鍵。安全

RegOpenKeyEx 函數的定義形式爲:函數

LONG RegOpenKeyEx(HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult 
)

第一個參數:hKey:須要打開的主鍵的名稱(HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,spa

HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG);code

第二個參數:lpSubKey:須要打開的子鍵的名稱: 指向一個非中斷字符串包含將要打開鍵的名稱。若是參數設置爲NULL 或者指向一個空字符串,過程將打開一個新的句柄由hKey參數肯定的值。這種狀況下,過程不會關閉先前已經打開的句柄。htm

第三個參數:ulOptions:保留, 必須設爲0;索引

第四個參數:samDesired:安全訪問標記,也就是權限,(KEY_ALL_ACCESS。。。。);內存

第五個參數:phkResult:獲得的將要打開鍵的句柄。資源

返回值: 若是函數調用成功,則返回0(ERROR_SUCCESS)。不然,返回值爲文件WINERROR.h中定義的一個非零的錯誤代碼。

具體用法如例:

CString strSubKey(_T("SYSTEM\\ControlSet001\\Control\\ComputerName\\ComputerName"));
if( ERROR_SUCCESS !=  RegOpenKeyEx(HKEY_LOCAL_MACHINE, strSubKey, 0, KEY_ALL_ACCESS, &hKey))
{
    retuen;
}

 

RegEnumKeyEx: 枚舉指定項下方的子項

RegEnumKeyEx函數的定義形式爲:

LONG RegQueryValueEx(HKEY hKey, DWORD dwIndex, LPTSTR lpName,LPDWORD lpcbName, LPDWORD lpReserved,LPTSTR lpClass, LPDWORD lpcbClass,PFILETIME lpftLastWriteTime);

第一個參數:hKey: 一個已打開項的句柄,或者指定一個標準項名 ;

第二個參數:dwIndex: 欲獲取的子項的索引。第一個子項的索引編號爲零 ;

第三個參數: lpName :用於裝載指定索引處項名的一個緩衝區 ;

第四個參數: lpcbName : 指定一個變量,用於裝載lpName緩衝區的實際長度(包括空字符)。一旦返回,它會設爲實際裝載到lpName緩衝區的字符數量 ;

第五個參數: lpReserved :保留,必須設爲NULL;

第六個參數: lpClass : 項使用的類名。能夠爲vbNullString

第七個參數: lpcbClass : 用於裝載lpClass緩衝區長度的一個變量。一旦返回,它會設爲實際裝載到緩衝區的字符數量 ;

第八個參數: lpftLastWriteTime : 枚舉子項上一次修改的時間 ;

返回值: 若是函數調用成功,則返回0(ERROR_SUCCESS) 。其餘任何值都表明一個錯誤代碼

 

SHDeleteKey: 用來刪除一個註冊表鍵,包括其下面的子鍵 。RegDeleteKey也能夠用來刪除一個鍵值 , 在 Win 95/98 平臺下,也可用來刪除整個子鍵和鍵值。可是在Windows NT/2000平臺下,只能用來刪除沒有子鍵的鍵。

SHDeleteKey函數的定義形式爲:

LONG SHDeleteKey (HKEY hKey,LPCTSTR lpSubKey);

第一個參數:hKey: 一個已打開項的句柄,或者指定一個標準項名 ;

第二個參數:lpSubKey:被刪除的鍵值名稱。它必須是hkey的一個子項,但它並不能有子項。此參數不能爲空。鍵值的名稱不區分大小寫。

返回值: 若是函數調用成功,則返回0(ERROR_SUCCESS) 。其餘任何值都表明一個錯誤代碼

具體用法如例:

TCHAR szSubKey[MAX_PATH];
DWORD dwNameLen = MAX_PATH;
if (ERROR_SUCCESS == RegEnumKeyEx(hKey, 0, szSubKey, &dwNameLen, NULL, NULL, NULL, NULL))
{
    if(ERROR_SUCCESS != SHDeleteKey(HKEY_LOCAL_MACHINE,strSubKey));
   {
        AfxMessageBox(_T("刪除失敗!"));
        return;
   }
}

 

RegQueryValueEx:獲得所打開註冊表鍵所關聯的一個給定值的類型和數據

RegQueryValueEx 函數的定義形式爲:

LONG RegQueryValueEx( HKEY hKey, LPTSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType, LPBYTE lpData,LPDWORD lpcbData );

第一個參數:hKey: 一個已打開項的句柄,或者指定一個標準項名 ;

第二個參數:lpValueName: 要查詢值的名字的地址,若是是NULL或一個空字符串(""),這個函數找回這個鍵的未命名或默認值的類型和數據;

第三個參數: lpReserved:保留,必須設爲NULL;

第四個參數:lpType:值類型緩存地址,若是不須要類型lpType參數能夠爲空(NULL)。能夠有如下值:1.REG_BINARY二進制數據。2.REG_DWORD一個32位數字。3.REG_DWORD_LITTLE_ENDIAN一個little-endian格式的32位數字。這至關於REG_DWORD。(ittle-endian格式,是一個多字節值在內存中被從低字節到高字節存貯。如,值0x12345678被存貯爲0x78 0x56 0x34 0x12)。4.REG_DWORD_BIG_ENDIAN一個big-endian格式的32位數字。(big-endian格式,一個多字節值在內存職被從高字節到低字節存貯。如,值0x12345678被存貯爲(0x12 0x34 0x56 0x78)。)5.REG_EXPAND_SZ一個包含未被引用的環境變量的以空字符結束的字符串(如,"%PATH%")。ExpandEnvironmentStrings函數。6.REG_LINK一個Unicode符號鏈接。7.REG_MULTI_SZ一個以空字符結束的字符串數組,被兩個null字符結束。8.REG_NONE未定義值類型。9.REG_RESOURCE_LIST一個設備驅動資源列表。10.REG_SZ一個以空字符結束的字符串。

第五個參數:lpData: 指定接收值數據的緩存區。若是數據是不須要的這個參數能夠爲空。

第六個參數:lpcbData :以字節爲單位,指向lpData參數所指定地緩存區大小的變量。函數返回複製到lpData的數據大小的變量。

返回值: 若是函數調用成功,則返回0(ERROR_SUCCESS) 。其餘任何值都表明一個錯誤代碼

具體用法如例:

DWORD dwBufLen;
TCHAR bufPath[MAX_PATH] = _T("\0");
if(ERROR_SUCCESS != RegQueryValueEx(hKey, _T("InstallDir"), NULL, NULL, (LPBYTE)bufPath, &dwBufLen))
{
   return;
}

 

RegCloseKey:釋放指定註冊鍵的句柄

RegCloseKey 函數的定義形式爲:

LONG RegCloseKey(HKEY hKey // 釋放鍵的句);

參數:hKey: 想要關閉的已經打開的鍵。

返回值: 若是函數調用成功,則返回0(ERROR_SUCCESS) 。其餘任何值都表明一個錯誤代碼

具體用法如例:

RegCloseKey(hKey);
相關文章
相關標籤/搜索