簡體   English   中英

RegQueryValueEx REG_SZ [C ++]

[英]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)將正確鍵入為charwchar_t

使用此API讀取REG_SZ字符串時,您需要確保兩件事。

1)您的輸出緩沖區必須有用於任何尾隨NULL終止符的空間2)成功時,您的輸出緩沖區可能不能為NULL終止。

最后一點很重要-如果字符串未使用NULL終止符存儲,則輸出緩沖區也不會是。 您需要注意並妥善處理,以免最終在應用程序中出現安全漏洞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM