C/C++讀寫注冊表中二進制數(shù)據(jù)(代碼示例)
1、RegOpenKeyEx 函數(shù):
原形:
LONG RegOpenKeyEx(
HKEY hKey, // 要打開主鍵名
LPCTSTR lpSubKey, // 需要打開的子鍵或路徑
DWORD ulOptions, // 保留,為0
REGSAM samDesired, // 操作權(quán)限標志
PHKEY phkResult // 指向你打開鍵的句柄 (通過指針返回)
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS.
解釋:該函數(shù)負責打開指定的鍵或子鍵,如果不存在他不建立。
查看微軟官方文檔:http://msdn.microsoft.com/zh-cn/aa912084
2、RegSetValueEx函數(shù):
原形:
LONG RegSetValueEx(
HKEY hKey, // 已打開的鍵的句柄
LPCTSTR lpValueName, // 要查詢值的名稱,傳如\"\"為查詢鍵下的默認值
DWORD Reserved, // 保留
DWORD dwType, // 寫入鍵值的類型
CONST BYTE *lpData, // 變量數(shù)據(jù)的地址
DWORD cbData // 變量的長度
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解釋:設(shè)置某子鍵下特定名稱的值。
查看微軟官方文檔:http://msdn.microsoft.com/zh-cn/aa916717#
3、RegQueryValueEx函數(shù):
原形:
LONG RegQueryValueEx(
HKEY hKey, // 已打開的鍵的句柄
LPTSTR lpValueName, // 要查詢值的名稱,傳如\"\"為查詢鍵下的默認值
LPDWORD lpReserved, // 保留,為0
LPDWORD lpType, // 查詢的類型
LPBYTE lpData, // 數(shù)據(jù)存放的地址
LPDWORD lpcbData // 數(shù)據(jù)長度+1
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解釋:讀取某子鍵下特定名稱的值。
查看微軟官方文檔:http://msdn.microsoft.com/zh-cn/aa914692
寫入二進制數(shù)據(jù)代碼示例:
# include <windows.h>
# include <tchar.h>
int main(void)
{
HKEY hKey;
HKEY rootKey = HKEY_CURRENT_USER;
TCHAR * subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"
"\\MenuOrder\\Start Menu2\\Programs\\test";
TCHAR * keyValue = "c:\\test.exe";
long openReg;
long setRegValue;
DWORD dwType = REG_BINARY;
BYTE value[256] = "c:\\test.exe";
openReg = RegOpenKeyEx(rootKey, subKey, 0, KEY_WRITE, &hKey);
if (openReg == ERROR_SUCCESS)
{
setRegValue = RegSetValueEx(hKey, _T("order"), 0, dwType, value, 256);
if (setRegValue == ERROR_SUCCESS)
{
MessageBox(NULL, _T("Write Sucess"), _T("call"), MB_OK);
}
else
{
MessageBox(NULL, _T("Write Fail"), _T("call"), MB_OK);
}
RegCloseKey(hKey);
}
return 0;
}
讀取二進制數(shù)據(jù)的代碼示例:
# include <windows.h>
# include <tchar.h>
int main(void)
{
HKEY hKey;
HKEY rootKey = HKEY_CURRENT_USER;
TCHAR * subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"
"\\MenuOrder\\Start Menu2\\Programs\\test";
long openRegResult;
long readRegResult;
DWORD dwType = REG_BINARY;
REGSAM mode = KEY_READ;
BYTE value[256] = {0};
DWORD length = 256;
openRegResult = RegOpenKeyEx(rootKey, subKey, 0, mode, &hKey);
if (ERROR_SUCCESS == openRegResult)
{
readRegResult = RegQueryValueEx(hKey, _T("order"), 0, &dwType, value, &length);
if (ERROR_SUCCESS == readRegResult)
{
MessageBox(NULL, _T(value), _T("call"), MB_OK);
}
else
{
MessageBox(NULL, _T("ERROR"), _T("call"), MB_OK);
}
}
RegCloseKey(hKey);
return 0;
}
注:讀寫其他類型的注冊表鍵值與上述的類似,不單獨講解了。
相關(guān)文章
C語言詳細分析結(jié)構(gòu)體的內(nèi)存對齊規(guī)則
C 數(shù)組允許定義可存儲相同類型數(shù)據(jù)項的變量,結(jié)構(gòu)是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲不同類型的數(shù)據(jù)項,本篇讓我們來了解C 的結(jié)構(gòu)體內(nèi)存對齊2022-07-07
C++中string與int的相互轉(zhuǎn)換實現(xiàn)代碼
這篇文章主要介紹了C++中string與int的相互轉(zhuǎn)換實現(xiàn)代碼,需要的朋友可以參考下2017-05-05
C++使用extern實現(xiàn)源文件變量與類成員函數(shù)的巧妙共享
C++中使用extern關(guān)鍵字可實現(xiàn)在源文件之間共享變量與類成員函數(shù),通過聲明變量或類在頭文件中,再在一個源文件中定義,其他源文件通過extern引用,促使模塊化、可維護的代碼組織,這篇文章主要介紹了C++用extern實現(xiàn)源文件變量與類成員函數(shù)的巧妙共享,需要的朋友可以參考下2024-03-03
QT實現(xiàn)按鈕開關(guān)Form窗體的效果的示例代碼
本文主要介紹了QT實現(xiàn)按鈕開關(guān)Form窗體的效果的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07

