在C#中获取唯一的系统标识符

使用C#可以轻松获得什么样的“唯一”系统标识符(哈希然后唯一地标识系统)? 我可以只是哈希硬盘大小和类似的事情,但我需要识别和区分所有由相同组件构建的计算机,所以我不能这样做。

欣赏提示,想法,示例代码!

这是WMI的一个良好开端……

// Win32_CPU will work too var search = new ManagementObjectSearcher( "SELECT * FROM Win32_baseboard" ); var mobos = search.Get(); foreach (var m in mobos) { var serial = m["SerialNumber"]; // ProcessorID if you use Win32_CPU } 

您可以使用许多硬件来实现这一点,并提出解决方案。

您可以使用System.Management命名空间获取与硬件,ProcessorId,MAC地址相关的所有内容,以及可以随后散列的更多信息。

看看这篇文章:

http://www.codeproject.com/KB/system/GetHardwareInformation.aspx

假设您正在谈论Windows,那么每个Windows安装都有一个唯一的产品ID(当您查看“我的电脑”的属性时可以看到)。 我认为这存储在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion:ProductId(REG_SZ) 。 我认为你想要更多吗?

您可以将WMI与C#一起使用以获取有关硬件的大量信息。

硬盘ID和以太网MAC地址是系统识别方案中使用的两种常见唯一标识符。 理论上,MAC地址是每个网卡唯一的。

网卡MAC地址:

 foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { // probably need to do some filtering on ni.NetworkInterfaceType here Console.WriteLine(ni.GetPhysicalAddress()); } 

你可以考虑使用GUID

什么是GUID

对于那些不知道的人,GUID(发音为goo’id – 全球唯一标识符)是一个128位整数,可用于唯一标识某些内容。 您可以在数据库中存储用户或产品,并且您希望以某种方式唯一地标识数据库中的每一行。 常见的方法是创建自动增量整数,另一种方法是为您的产品创建GUID。

如何在C#中创建GUID

可以在System命名空间中找到GUID方法。 GUID方法System.Guid.NewGuid()初始化GUID类的新实例。

对于那些希望以特定方式格式化GUID的人,还有一些重载可用。

以下实时示例将输出生成的GUID,源代码也在下面。

 Response.Write(@"
System.Guid.NewGuid().ToString() = " + System.Guid.NewGuid().ToString()); Response.Write(@"
System.Guid.NewGuid().ToString(""N"") = " + System.Guid.NewGuid().ToString("N")); Response.Write(@"
System.Guid.NewGuid().ToString(""D"") = " + System.Guid.NewGuid().ToString("D")); Response.Write(@"
System.Guid.NewGuid().ToString(""B"") = " + System.Guid.NewGuid().ToString("B")); Response.Write(@"
System.Guid.NewGuid().ToString(""P"") = " + System.Guid.NewGuid().ToString("P"));