HKEY hKey;
DWORD KeyType = REG_BINARY;
DWORD DataSize;
LPCTSTR data_set = TEXT("System//CurrentControlSet//Services//mssmbios//Data");
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_set,0,KEY_READ,&hKey));
if(ret0==ERROR_SUCCESS)
{
RegQueryValueEx(hKey,L"SMBiosData",NULL,&KeyType,NULL,&DataSize);
BYTE *pbuf = new BYTE[DataSize];
long ret1= RegQueryValueEx(hKey,L"SMBiosData",0,&KeyType,(LPBYTE)pbuf,&DataSize);
if(ret1 == ERROR_SUCCESS)
{
//Add your code
memcpy(&str,pbuf,dwSize2);
int iLen = MultiByteToWideChar(/*CP_ACP*/CP_UTF8,0,str,dwSize2,NULL,0);
MultiByteToWideChar(/*CP_ACP*/CP_UTF8,0,str,dwSize2,【destination】 ,iLen);
}
}
RegCloseKey(hKey);
后来拿到师妹的电脑测,因为她的数据中有汉语发现显示乱码,应该把CP_ACP改为CP_UTF8,这样显示正确。。。