我创建一个NPAPI DLL文件,我需要从注册表中获取一些信息,但是当我使用RegQueryValueEx时,我得到一些奇怪的字符。与RegQueryValueEx奇怪的字符
例如,我的电脑型号是“N310”,但我得到“Nfb1fb1”或“N $(”。
我敢肯定,这是一个字符集的问题,但我是新与C++我需要一些帮助
我使用Visual Studio 2010和我的项目是使用UNICODE字符集
这里是我的代码:。
char lszValue[255];
std::string cadena;
HKEY hKey;
LONG returnStatus;
DWORD dwType=REG_SZ;
DWORD dwSize=255;
returnStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\BIOS", NULL, KEY_READ, &hKey);
if (returnStatus == ERROR_SUCCESS) {
returnStatus = RegQueryValueEx(hKey, L"SystemProductName", NULL, &dwType,(LPBYTE)&lszValue, &dwSize);
lszValue[dwSize] = 0;
cadena.assign(lszValue, dwSize);
return cadena;
}
非常感谢您,感谢您提前。
我不会硬编码'dwSize = 255',这是脆弱的。你可以使用[数组大小帮助](http://stackoverflow.com/a/4064220/168225)或者'std :: array'来代替。 – 2012-08-09 07:53:22