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

Ale*_*lex 6 c# system-identification

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

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

JP *_*oto 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
}
Run Code Online (Sandbox Code Playgroud)

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


Vin*_*vic 8

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

看看这篇文章:

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


Dan*_*plo 5

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