我正在尝试从注册表中获取一个字符串值,但是我只得到了第一个字母。
HKEY hKey;
char gamePath[MAX_PATH];
if(RegOpenKeyEx(HKEY_CURRENT_USER,L"Software\\Blizzard Entertainment\\Warcraft III",0,KEY_READ,&hKey) == ERROR_SUCCESS)
{
DWORD type=REG_SZ, size=MAX_PATH;
int error = RegQueryValueEx(hKey,L"GamePath",NULL,&type,(LPBYTE)&gamePath,&size);
if(error != ERROR_SUCCESS)
cout << "Failed to read registry value: " << error << endl;
RegCloseKey(hKey);
}
else cout << "Failed to read registry key." << endl;
cout << gamePath << endl; //output: C
我在做什么错?谢谢。
答案 0 :(得分:0)
您有一个core
数组,但是char
在宽字符版本中需要一个RegQueryValueEx
数组。当今,大多数程序都是宽字符应用程序,但是如果不确定,可以使用Microsoft定义的常量wchar_t
代替TCHAR
或char
。
之所以只得到一个字符,是因为第一个字符的值在1到255之间。这样的16位字符代码的高字节为零,因此在内存中看起来像是字符串终止符。>