System identification 唯一计算机ID

System identification 唯一计算机ID,system-identification,System Identification,我正在寻找一种获得唯一计算机ID的方法 根据,我不能将处理器ID用于此目的。我可以带主板ID吗?识别计算机的最佳方法是什么 主板ID是一个非常独特的标识符。另一种选择是使用网卡的MAC地址,它非常独特。网络适配器的MAC地址? windows操作系统安装的安全标识符(SID)?(假设您正在处理的是windows) 你能为每台电脑生成一个GUID吗 您到底想实现什么?就像您说过的CPU Id不会是唯一的,但是您可以将它与另一个硬件标识符一起使用来创建您自己的唯一密钥 参考组件系统管理 因此,使用以

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


根据,我不能将处理器ID用于此目的。我可以带主板ID吗?识别计算机的最佳方法是什么

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

网络适配器的MAC地址? windows操作系统安装的安全标识符(SID)?(假设您正在处理的是windows) 你能为每台电脑生成一个GUID吗


您到底想实现什么?

就像您说过的CPU Id不会是唯一的,但是您可以将它与另一个硬件标识符一起使用来创建您自己的唯一密钥

参考组件
系统管理

因此,使用以下代码获取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;

显然,您获得的ID越多,唯一性就越大。然而,同一台机器拥有相同的CPU串行和硬盘串行的可能性已经微乎其微了。

这与C无关。我们可以假设(我很感激,在回答编程问题时过于轻率)一旦确定了一个通用机制,就需要在C#中实现一个特定的实现……我应该用什么标记来回答这个问题?可能重复:如果你想要一个如何在C#中获取唯一计算机ID的示例,你应该用C#标记它。。。我猜这就是你想要的,不是吗?但是应该注意的是,对于很多NIC,mac可以从NIC属性窗口更改,而主板ID更难更改。据我所知,你可以更改你的mac地址。如果有多个上网板,该怎么办(或者我该如何命名)?这是正确的。主板ID要独特得多。然而,如果您不需要非常强的唯一性(即您可以假设mac不会改变),那么获取mac地址就容易得多@填充,将地址散列在一起?:)正如我之前所说,处理器ID不合适。@StuffOccess-更新了答案。我明白你的意思。我只是怀疑,如果有一个RAID,并且有两个不同的HDD,上面有磁盘C,我会得到什么。@Stuff发生了-我假设它可能会返回RAID控制器ID或其他东西。我相信微软已经考虑到了这一点。这不会产生一个唯一的ID。到目前为止,我们在从戴尔购买的15台机器上测试了这一点,并且已经有3台机器具有相同的ID。如果他试图为许可机制这样做,那么SID和MAC地址可以很容易地更改,因此是不可接受的。