我正在寻找获取唯一计算机ID的方法。
根据这篇帖子的说法,我无法使用处理器ID来达到此目的。我可以使用主板ID吗?有什么最好的方法来确定计算机的唯一性?
我正在寻找获取唯一计算机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();
然后,您只需将这两个序列组合起来,就可以获得该机器的唯一ID:
string uniqueId = cpuInfo + volumeSerial;
显然,你获取的硬件组件的ID越多,唯一性就越大。然而,同一台机器拥有相同CPU序列号和硬盘序列号的机率已经微乎其微。
网络适配器的MAC地址? Windows操作系统安装的安全标识符(SID)?(假设你正在处理的是Windows系统) 你能为每台电脑生成一个GUID吗?
您到底想实现什么目标?
主板ID是一个非常独特的标识符。另一个选项是使用网络卡的MAC地址,这几乎是唯一的。