我想获得一个独特的CPU ID
我使用下面的代码来获取唯一的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;
也许Win32_ComputerSystemProduct
对象的UUID
属性可以满足您的需求。 它应该是每个主板独一无二的,只要制造商首先配置它。 无论如何,如果没有主板出现,那么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。 我们检查了低级程序集例程,并为两个不同的AMD cpu获得相同的id。
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; }
我得出结论,这不是一个获得唯一ID的好方法。 因此,我没有使用这种方法,而是编写了一个更大的代码片段,其中我要求系统的更多硬件标识符来构建唯一标识符。
它的方式更好,因为如果我在克隆的硬件上运行它,或者如果硬件发生变化,这种方法甚至会产生不同的数字。 有很多WMI信息,我认为这是人们应该寻找创建独特的东西而不使用ProcessorID的地方。
上述就是C#学习教程:我想获得一个独特的CPU ID分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1002412.html