两台Intel机器上的CPU ID相同

时间:2012-12-24 17:05:27

标签: c#

  

可能重复:
  WIN32_Processor::Is ProcessorId Unique for all computers

我正在创建一个具有试用功能的应用程序。要检测某个用户是否已使用过试用版,应用程序会使用machineHash连接到我的服务器。

machineHash函数如下所示:

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

foreach (ManagementObject mo in moc)
{
    if (cpuInfo == "")
    {
        //Get only the first CPU's ID
        cpuInfo = mo.Properties["processorID"].Value.ToString();
        break;
    }
}
return cpuInfo;

但是,它确实将我的处理器ID报告为BFEBFBFF000206A7(在两台不同的Intel机器上,i5和Celeron)。谷歌搜索BFEBFBFF000206A7也有点击,所以它不是唯一的。

有谁能告诉我为什么这不是唯一的?我不想使用VolumeSerial,假设C:\驱动器可以通过简单的命令轻松更改。

1 个答案:

答案 0 :(得分:6)

不是使用处理器ID,而是将系统的多个ID组合成1个字符串,以便在每次程序发送检查时进行比较。

使用类似的东西:

using System.Management;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
"select * from " + whatever_id);

您可以在此处找到所有可以替换whatever_id的值: http://www.codeproject.com/Articles/17973/How-To-Get-Hardware-Information-CPU-ID-MainBoard-I

我会找到一些你想要使用的,其中一些可能是独一无二的,但即使你不使用一个独特的领域,你也可以制作组合,这些组合对于大多数意图和目的来说都是独一无二的。