【问题标题】:Getting CPU ID on virtual machine在虚拟机上获取 CPU ID
【发布时间】:2011-07-03 19:33:59
【问题描述】:

我正在尝试使用此代码:

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 虚拟机 (virtualbox) 上获取 hw uid,但我只得到一个消息框:

Object reference not set to an instance of an object.

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

【问题讨论】:

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


    【解决方案1】:

    是的,这是因为您正在运行虚拟机。 mo.Properties["ProcessorId"] 将返回 null。查看答案here

    【讨论】:

    • 请注意,该问题的(当前)接受的答案暗示了一种方法,据我所知,该方法将为您提供 volume 序列号(很容易更改, ) 而不是 驱动器 序列号(不容易更改。)
    【解决方案2】:

    这在虚拟机上应该可以正常工作。不过,虚拟 CPU 提供的 CPU ID 可能与物理 CPU 匹配,也可能不匹配。

    【讨论】:

      【解决方案3】:

      我刚刚在这里找到了一个更快的解决方案: http://www.dotnetspark.com/kb/24-get-processor-id-using-c-sharp.aspx

      它比你的运行速度更快。它在我的虚拟 WINDOWS 中运行(使用虚拟安装了 WINDOWS XP 的 VMware Workstation 7.0.0),因为这两个代码都使用同一个库,你的应该也能运行!尝试在项目输出中包含 dll 文件可能会有所帮助。

      【讨论】:

        猜你喜欢
        • 2015-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多