题
我正在寻找一种获得唯一计算机 ID 的方法。
根据 这个帖子 我无法将处理器 ID 用于此目的。可以拿主板ID吗?识别计算机的最佳方法是什么?
解决方案
就像您说的CPU ID不会是唯一的,但是您可以将其与另一个硬件标识符一起使用来创建自己的唯一键。
参考组件 System.Management
因此,使用此代码获取CPU ID:
string cpuInfo = string.Empty;
ManagementClass mc = new ManagementClass("win32_processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuInfo = mo.Properties["processorID"].Value.ToString();
break;
}
然后使用此代码获取高清ID:
string drive = "C";
ManagementObject dsk = new ManagementObject(
@"win32_logicaldisk.deviceid=""" + drive + @":""");
dsk.Get();
string volumeSerial = dsk["VolumeSerialNumber"].ToString();
然后,您只需将这两个串行组合起来即可获得该机器的唯一功能:
string uniqueId = cpuInfo + volumeSerial;
显然,您获得ID的硬件组件越多,唯一性就会越大。但是,具有相同CPU串行和硬盘序列的同一台机器的机会已经纤细。
其他提示
主板ID是一个非常唯一的标识符。另一个选择是使用网络卡MAC地址,这几乎是唯一的。
网络适配器的MAC地址?Windows 操作系统安装的安全标识符 (SID)?(假设您要处理的是窗口)您可以为每台PC生成一个GUID吗?
您究竟想要实现什么目标?
不隶属于 StackOverflow