我想对许可系统使用一些独特的东西。我决定使用Win32_Processor Management类中的ProcessorID。
我在具有相同处理器类型的两个不同系统上进行了尝试。
它显示两个系统的相同ProcessorID。我正在使用此代码
public static String GetCPUId() { String processorID = ""; ManagementObjectSearcher searcher = new ManagementObjectSearcher( "Select * FROM WIN32_Processor"); ManagementObjectCollection mObject = searcher.Get(); foreach (ManagementObject obj in mObject) { processorID = obj["ProcessorId"].ToString(); } return processorID; }
不,不能保证它是唯一的,因为处理器甚至可能不支持CPUID指令,在这种情况下,不能保证调用成功。
另外,您还忽略了一台计算机中可能有多个处理器的情况,因此获取单个处理器的ID并没有帮助。
正如其他人指出的那样,如果要获取系统的唯一ID,最好的选择是创建一个ID,该ID是系统上各种组件ID的混合物。
(有,不是任何,但一个散列 十分 硬件的各种值的一些冲突) 可能 就足够了。您可能想要使用系统中已完全嵌入的内容,例如处理器,主板信息,而不是容易拆卸/更改的内容,例如USB驱动器/集线器/等。