C/C++讀寫(xiě)注冊(cè)表中二進(jìn)制數(shù)據(jù)(代碼示例)
1、RegOpenKeyEx 函數(shù):
原形:
LONG RegOpenKeyEx(
HKEY hKey, // 要打開(kāi)主鍵名
LPCTSTR lpSubKey, // 需要打開(kāi)的子鍵或路徑
DWORD ulOptions, // 保留,為0
REGSAM samDesired, // 操作權(quán)限標(biāo)志
PHKEY phkResult // 指向你打開(kāi)鍵的句柄 (通過(guò)指針?lè)祷兀?nbsp;
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS.
解釋:該函數(shù)負(fù)責(zé)打開(kāi)指定的鍵或子鍵,如果不存在他不建立。
查看微軟官方文檔:http://msdn.microsoft.com/zh-cn/aa912084
2、RegSetValueEx函數(shù):
原形:
LONG RegSetValueEx(
HKEY hKey, // 已打開(kāi)的鍵的句柄
LPCTSTR lpValueName, // 要查詢值的名稱,傳如\"\"為查詢鍵下的默認(rèn)值
DWORD Reserved, // 保留
DWORD dwType, // 寫(xiě)入鍵值的類型
CONST BYTE *lpData, // 變量數(shù)據(jù)的地址
DWORD cbData // 變量的長(zhǎng)度
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解釋:設(shè)置某子鍵下特定名稱的值。
查看微軟官方文檔:http://msdn.microsoft.com/zh-cn/aa916717#
3、RegQueryValueEx函數(shù):
原形:
LONG RegQueryValueEx(
HKEY hKey, // 已打開(kāi)的鍵的句柄
LPTSTR lpValueName, // 要查詢值的名稱,傳如\"\"為查詢鍵下的默認(rèn)值
LPDWORD lpReserved, // 保留,為0
LPDWORD lpType, // 查詢的類型
LPBYTE lpData, // 數(shù)據(jù)存放的地址
LPDWORD lpcbData // 數(shù)據(jù)長(zhǎng)度+1
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解釋:讀取某子鍵下特定名稱的值。
查看微軟官方文檔:http://msdn.microsoft.com/zh-cn/aa914692
寫(xiě)入二進(jìn)制數(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;
}
讀取二進(jìn)制數(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;
}
注:讀寫(xiě)其他類型的注冊(cè)表鍵值與上述的類似,不單獨(dú)講解了。
相關(guān)文章
C語(yǔ)言堆結(jié)構(gòu)處理TopK問(wèn)題詳解
TopK問(wèn)題即在N個(gè)數(shù)中找出最大的前K個(gè),這篇文章將詳細(xì)講解如何利用小根堆的方法解決TopK問(wèn)題,文中代碼具有一定參考價(jià)值,快跟隨小編一起學(xué)習(xí)一下吧2022-06-06
c++指針參數(shù)傳遞和引用參數(shù)傳遞的區(qū)別解析
這篇文章主要介紹了c++指針參數(shù)傳遞和引用參數(shù)傳遞的區(qū)別解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
在C++中高效使用和處理Json格式數(shù)據(jù)的示例代碼
最近的項(xiàng)目在用c處理后臺(tái)的數(shù)據(jù)時(shí),因?yàn)楹枚嗤獠拷涌诙荚谑褂肑son格式作為返回的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)描述,如何在c中高效使用和處理Json格式的數(shù)據(jù)就成為了必須要解決的問(wèn)題,需要的朋友可以參考下2023-11-11
關(guān)于C++友元類的實(shí)現(xiàn)講解
今天小編就為大家分享一篇關(guān)于關(guān)于C++友元類的實(shí)現(xiàn)講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
QT自定義QTextEdit實(shí)現(xiàn)大數(shù)據(jù)的實(shí)時(shí)刷新顯示功能實(shí)例
TextEdit是我們常用的Qt控件,用來(lái)顯示文本信息,下面這篇文章主要給大家介紹了關(guān)于QT自定義QTextEdit實(shí)現(xiàn)大數(shù)據(jù)的實(shí)時(shí)刷新顯示功能的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
win32 api實(shí)現(xiàn)2048游戲示例
這篇文章主要介紹了win32 api實(shí)現(xiàn)2048游戲示例,需要的朋友可以參考下2014-05-05

