我想对许可系统使用一些独特的东西。我决定使用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驱动器/集线器/等)。
关于c# - WIN32_Processor::Is ProcessorId对于所有计算机都是唯一的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1101772/