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

时间:2009-08-20 21:30:59

标签: c# system-identification

使用C#可以轻松获得哪种“唯一”系统标识符(用于散列然后唯一标识系统)?我可以只是哈希硬盘大小和类似的东西,但我需要识别和区分所有由相同组件构建的计算机,所以我不能去那。

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

6 个答案:

答案 0 :(得分:9)

这是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
}

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

答案 1 :(得分:8)

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

看一下这篇文章:

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:2)

网卡MAC地址:

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

答案 5 :(得分:1)

您可以查看使用GUID's

什么是GUID

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

如何在C#

中创建GUID

可以在System命名空间中找到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"));