我使用下面的代码来获得一个唯一的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;
也许UUID
的财产Win32_ComputerSystemProduct
对象将满足您的需求。 这应该是每个主板唯一的,只要制造商将其配置在首位。 这不是太常见了CPU的移动更加主板凑凑热闹来,反正。
尝试
ManagementClass managClass = new ManagementClass("win32_processor");
ManagementObjectCollection managCollec = managClass.GetInstances();
foreach (ManagementObject managObj in managCollec)
{
cpuInfo = managObj.Properties["processorID"].Value.ToString();
break;
}
做工精细这里...
虽然有明确的机器指令要求的CPU的CPUID,这并不保证返回一个唯一的ID,因此这几乎是不可能得到通用唯一CPUID不管你使用哪种方法。 我们检查了低水平的组装程序并获得相同的ID为两个不同的AMD的CPU。
我得出的结论,这只是不是一个好方法来获得唯一的ID。 因此,而不是该方法中,我写了一个更大的一段代码,其中我请求的系统的更硬件标识符建立一个唯一的标识符。
它的方式这种方法更好,甚至会产生不同的号,如果我想在克隆的硬件上运行它,或者,如果硬件得到改变。 有很多的WMI信息四周,我想这是人们应该寻求创造独特的东西,而不是使用ProcessorID的地方。
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;
}