溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C/C++讀寫(xiě)注冊(cè)表中二進(jìn)制數(shù)據(jù)(代碼示例)

發(fā)布時(shí)間:2020-10-23 09:06:05 來(lái)源:腳本之家 閱讀:378 作者:烈風(fēng) 欄目:編程語(yǔ)言

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ú)講解了。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI