每台计算机是否有一个唯一的标识符来区分它们?

3

我正在使用C#开发.NET Framework的Windows应用程序。我想知道是否有任何计算机制造商都可以生产的唯一ID,无论由哪个制造商制造,但必须是唯一的。

谢谢, Bibhu

4个回答

3

请查看:如何获取计算机的唯一ID

硬盘ID(卷序列号)

查找唯一的卷序列号与查找唯一设备ID非常相似,但幸运的是要简单一些:

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

如果您克隆硬盘(例如使用Acronis TrueImage),则将映像复制到的驱动器将具有相同的卷序列号。 - bitbonk
@PranayRana:是否有可能使用PHP获取每台计算机的唯一ID?谢谢。 - pcs

2

3
抱歉让您失望了,但是不是这样的……我拥有两个具有完全相同MAC地址的网卡……在找到某些网络问题的源头时,这造成了一些混乱……在同一个局域网中发生碰撞的概率很低……而在全球范围内,你可能会感到惊讶。 - DarkSquirrel42
@DarkSquirrel42 我认为在全球范围内尝试唯一标识个人电脑是一个坏主意。如果这是在局域网或广域网上运行的Windows应用程序,你可以使用。 - Richard Forrest
@DarkSquirrel42 除非被篡改,否则OOTB不能有两个相同的MAC ID。 - Zenwalker

1

如果它们都在同一个Windows网络中,请使用计算机名称。是的,有时它们可能具有相同的名称,但为了访问每台计算机,网络将为每个计算机分配唯一的名称。


1

您可以使用主板序列号:

public static string GetMBSN()
{
   //Getting list of motherboards
   ManagementObjectCollection mbCol = new ManagementClass("Win32_BaseBoard").GetInstances();
   //Enumerating the list
   ManagementObjectCollection.ManagementObjectEnumerator mbEnum = mbCol.GetEnumerator();
   //Move the cursor to the first element of the list (and most probably the only one)
   mbEnum.MoveNext();
   //Getting the serial number of that specific motherboard
   return ((ManagementObject)(mbEnum.Current)).Properties["SerialNumber"].Value.ToString();
}

1
对于某些主板,WMI无法返回序列号。 - bitbonk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接