我正在尝试使用此代码:
public string GetCPUId()
{
string cpuInfo = String.Empty;
string temp = String.Empty;
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (cpuInfo == String.Empty)
{
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
}
}
return cpuInfo;
}
要在XP虚拟机(虚拟机)上获得hw uid,但我只收到一个消息框,上面写着:
Object reference not set to an instance of an object.
是因为它是虚拟机还是什么?
答案 0 :(得分:7)
是的,这是因为您正在运行虚拟机。 mo.Properties["ProcessorId"]
将返回null。请参阅答案here。
答案 1 :(得分:3)
我刚刚在这里找到了一个更快的解决方案: http://www.dotnetspark.com/kb/24-get-processor-id-using-c-sharp.aspx
它比你的工作速度更快。它在我的虚拟窗口中工作(使用VMware Workstation 7.0.0,虚拟安装了WINDOWS XP),因为两个代码都使用相同的库,你的工作也应该工作!尝试在项目输出中包含dll文件,可以帮助。
答案 2 :(得分:0)
这应该可以在VM上正常工作。但是,虚拟CPU提供的CPU ID可能与物理CPU匹配,也可能不匹配。