我正在寻找一种获得唯一计算机 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吗?

您究竟想要实现什么目标?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top