我正在寻找一种获取唯一计算机ID的方法。
根据this post,我不能将处理器ID用于此目的。我可以拿主板ID吗?识别计算机的最佳方法是什么?
答案 0 :(得分:36)
就像你说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();
然后,您可以组合这两个序列来获得该机器的uniqueId:
string uniqueId = cpuInfo + volumeSerial;
显然,获得ID的硬件组件越多,唯一性就越大。但是,同一台机器具有相同的CPU串口和硬盘串口的可能性已经很小了。
答案 1 :(得分:4)
网络适配器的MAC地址? Windows操作系统的安全标识符(SID)安装? (假设你正在处理它的窗口) 你能为每台PC生成一个GUID吗?
你到底想要达到什么目的?
答案 2 :(得分:3)
主板ID是一个非常独特的标识符。另一种选择是使用网卡MAC地址,它们非常独特。