获取虚拟机上的CPU ID

时间:2011-02-24 19:07:47

标签: c# visual-studio-2010 virtual-machine hardware-id cpuid

我正在尝试使用此代码:

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.

是因为它是虚拟机还是什么?

3 个答案:

答案 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匹配,也可能不匹配。