在 Windows XP 和 Windows 2003 Server 系统上,用WMI无法正确的取得cpu型号。官方的解决方案是安装补丁。但软件开发者不可能要求用户去安装补丁,所以还是从注册表获取cpu 信息吧。
方法如下:
BOOL GetProcessorName(CString & strProcessorName)
{
LONG res = ERROR_SUCCESS;
HKEY hKey = NULL;
wchar_t ProcessorNameString[256] = {0};
strProcessorName.Empty();
res = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Hardware//Description//System//CentralProcessor//0", 0, KEY_QUERY_VALUE, &hKey);
if(res != ERROR_SUCCESS)
return FALSE;
DWORD dataSize = sizeof(ProcessorNameString);
res = RegQueryValueEx(hKey, L"ProcessorNameString", NULL, NULL, (LPBYTE)ProcessorNameString, &dataSize);
RegCloseKey(hKey);
if(res != ERROR_SUCCESS)
{
return FALSE;
}
strProcessorName = ProcessorNameString;
return TRUE;
}