32

我正在寻找一种获取唯一计算机 ID 的方法。

根据这篇文章,我不能为此目的使用处理器 ID。可以拿主板ID吗?识别计算机的最佳方法是什么?

4

3 回答 3

38

就像您所说的 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;
}

然后使用此代码获取 HD ID:

string drive = "C";
ManagementObject dsk = new ManagementObject(
    @"win32_logicaldisk.deviceid=""" + drive + @":""");
dsk.Get();
string volumeSerial = dsk["VolumeSerialNumber"].ToString();

然后,您可以将这两个序列组合起来以获得该机器的唯一 ID:

string uniqueId = cpuInfo + volumeSerial;

显然,您获得的硬件组件越多,唯一性就越大。但是,同一台机器拥有相同CPU序列和硬盘序列的机会已经微乎其微。

于 2010-08-13T07:59:29.383 回答
5

网卡的MAC地址?Windows 操作系统安装的安全标识符 (SID)?(假设您正在处理的是 Windows)您可以为每台 PC 生成一个 GUID 吗?

你到底想达到什么目的?

于 2010-08-13T07:59:27.677 回答
4

主板 ID 是一个非常独特的标识符。另一种选择是使用非常独特的网卡 MAC 地址。

于 2010-08-13T07:57:32.810 回答