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