我正在创建一个具有试用功能的应用程序.要检测某个用户是否已经使用过试用版,应用程序会使用它们连接到我的服务器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;
Run Code Online (Sandbox Code Playgroud)
但是,它确实将我的处理器ID报告为BFEBFBFF000206A7(在两台不同的Intel机器上,i5和Celeron).谷歌搜索BFEBFBFF000206A7也有点击,所以它不是唯一的.
谁能告诉我为什么这不是唯一的?我不想使用VolumeSerial,C:\因为可以通过简单的命令轻松更改驱动器.
不是使用处理器ID,而是将系统的多个ID组合成1个字符串,以便在每次程序发送检查时进行比较.
使用这样的东西:
using System.Management;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
"select * from " + whatever_id);
Run Code Online (Sandbox Code Playgroud)
所有可以替换whatever_id的值都可以在这里找到:http: //www.codeproject.com/Articles/17973/How-To-Get-Hardware-Information-CPU-ID-MainBoard-I
我会找到一些你想要使用的,其中一些可能是独一无二的,但即使你不使用一个独特的领域,你可以制作组合,这对于大多数意图和目的来说都是独一无二的.
| 归档时间: |
|
| 查看次数: |
6850 次 |
| 最近记录: |