![](/img/trans.png)
[英]using RegQueryValueEx to take reg_sz as input and use that as char array
[英]RegQueryValueEx REG_SZ [C++]
從注冊系統獲取數據的變量應具有哪種數據類型?
HKEY hKey;
HKEY hKey2;
DWORD dwMHz = MAX_PATH;
string pName;
long lError = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",
0,
KEY_READ,
&hKey);
long lError2 = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",
0,
KEY_READ,
&hKey2);
// Working
RegQueryValueEx(hKey, "~MHz", NULL, NULL, (LPBYTE) &dwMHz, &BufSize);
//Not working <-- THIS -->
RegQueryValueEx(hKey2, "ProcessorNameInfo", NULL, NULL, (LPBYTE) &pName, &BufSize2);
cout << " Processor frequency: " << dwMHz / 1024 << " GHz" << endl;
cout << " Processor Name: " << pName << endl;
RegCloseKey(hKey);
RegCloseKey(hKey2);
當我嘗試打印“ pName”時,我什么也沒得到。
a您將需要將此數據讀入TCHAR
類型的數組中,該數組取決於您應用程序的構建方式(UNICODE / MBCS)將正確鍵入為char
或wchar_t
。
使用此API讀取REG_SZ字符串時,您需要確保兩件事。
1)您的輸出緩沖區必須有用於任何尾隨NULL終止符的空間2)成功時,您的輸出緩沖區可能不能為NULL終止。
最后一點很重要-如果字符串未使用NULL終止符存儲,則輸出緩沖區也不會是。 您需要注意並妥善處理,以免最終在應用程序中出現安全漏洞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.