打開註冊表辦法:在運行窗口輸入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);