什么样的“独特的”系统标识符可以使用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

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

有也可用于那些谁希望以特定方式格式化的GUID几个重载。

的GUID生成以下活样品将输出时,源代码也下方。

Response.Write(@"<br>System.Guid.NewGuid().ToString() = " + System.Guid.NewGuid().ToString());
Response.Write(@"<br>System.Guid.NewGuid().ToString(""N"") = " + System.Guid.NewGuid().ToString("N"));
Response.Write(@"<br>System.Guid.NewGuid().ToString(""D"") = " + System.Guid.NewGuid().ToString("D"));
Response.Write(@"<br>System.Guid.NewGuid().ToString(""B"") = " + System.Guid.NewGuid().ToString("B"));
Response.Write(@"<br>System.Guid.NewGuid().ToString(""P"") = " + System.Guid.NewGuid().ToString("P"));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top