我從註冊表中查詢數據,它被輸出爲LPBYTE,這就是我卡住的地方。我需要將LPBYTE轉換爲可以操作的數據類型,例如String。LPBYTE轉換爲字符串
這是到目前爲止我的代碼
HKEY hk;
string poolID;
DWORD dwSize = 0;
DWORD dwDataType = 0;
DWORD dwValue;
LPBYTE lpValue = NULL;
CA2W registryLocation("Software\\Example");
// Check registry if exists, otherwise create.
LONG openReg = RegOpenKeyEx(HKEY_CURRENT_USER, registryLocation, 0, KEY_QUERY_VALUE, &hk);
if (openReg==ERROR_SUCCESS) { } else { cout << "Error (Could not open/create Registry Location)\n"; }
// Get buffer size
LONG getRegBuf = RegQueryValueExA(hk, "", 0, &dwDataType, lpValue, &dwSize);
if (getRegBuf==ERROR_SUCCESS) { cout << "Got reg key buf size\n"; } else { cout << "Error (registry key does not exist)/n"; intro(); }
lpValue = (LPBYTE)malloc(dwSize);
// Open reg value
LONG getReg = RegQueryValueExA(hk, "", 0, &dwDataType, (LPBYTE)&dwValue, &dwSize);
if (getReg==ERROR_SUCCESS) { cout << "Successful\n"; } else { cout << "Error\n"; }
cout << dwValue;
任何幫助或代碼示例將非常感激。
分配一個字符數組,並把它放在那裏。所以聲明'lpValue'是'char *'。您需要考慮到註冊表中的數據不是空終止的可能性。 –
我試過'char * regValue =(LPBYTE)lpValue;'但是VS報告LPBYTE類型的值不能與char *一起使用。 – Ryan
你在讀DWORD或緩衝區嗎? – James