我想获得一个独特的CPU ID

时间:2013-03-30 21:39:00

标签: c# cpu

我使用下面的代码获取唯一的CPU ID,我在网上找到了各种样本。然而。偶然的机会我碰巧拥有2台华硕笔记本电脑。一个是四核i5另一个是重型i7 octocore都是64位机器.. 令我惊讶的是,它们都产生了相同的“唯一”CPU ID ???。

所以这段代码对我不起作用,是否有其他方法可以获取独特的CPU ID或者我在这里做错了什么。我希望得到的是一个特定于每个CPU的数字

string cpuID = string.Empty;
ManagementClass mc = new ManagementClass("win32_processor");
ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)
{
 if (cpuID == "")
 {
      //Remark gets only the first CPU ID
      cpuID = mo.Properties["processorID"].Value.ToString();

 }
}
return cpuID;

5 个答案:

答案 0 :(得分:2)

UUID对象的Win32_ComputerSystemProduct属性可能符合您的需求。它应该是每个主板独一无二的,只要制造商首先配置它。无论如何,如果没有主板出现,那么CPU移动并不常见。

答案 1 :(得分:1)

ManagementClass managClass = new ManagementClass("win32_processor");
ManagementObjectCollection managCollec = managClass.GetInstances();

foreach (ManagementObject managObj in managCollec)
{
    cpuInfo = managObj.Properties["processorID"].Value.ToString();
    break;
}

在这里工作正常......

答案 2 :(得分:1)

我得出的结论是,这不是获取唯一ID的好方法。 因此,我没有使用这种方法,而是编写了一段更大的代码,我在其中请求了更多的系统硬件标识符来构建唯一的标识符。

它的方式更好,因为如果我在克隆的硬件上运行它,或者如果硬件发生变化,这种方法甚至会产生不同的数字。有大量的WMI信息,我认为这是人们应该寻找创造独特的东西而不使用ProcessorID的地方。

答案 3 :(得分:1)

虽然有一个明确的机器指令来询问CPU的CPUID,但不能保证返回唯一的ID,因此无论使用哪种方法,几乎​​都不可能获得通用的唯一CPUID。我们检查了低级程序集例程,并为两个不同的AMD cpu获得相同的id。

答案 4 :(得分:0)

    var mbs = new ManagementObjectSearcher("Select ProcessorID From Win32_processor");
    var mbsList = mbs.Get();

    foreach (ManagementObject mo in mbsList)
    {
        cpuid = mo["ProcessorID"].ToString();
        textBox1.Text=cpuid;
    }