可能重复:
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:\
驱动器可以通过简单的命令轻松更改。
答案 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
我会找到一些你想要使用的,其中一些可能是独一无二的,但即使你不使用一个独特的领域,你也可以制作组合,这些组合对于大多数意图和目的来说都是独一无二的。