使用C#可以輕鬆獲得什麼樣的「唯一」系統標識符(以散列並隨後唯一標識系統)?我只能散列硬盤大小和類似的東西,但我需要識別和區分所有由相同組件構建的計算機,所以我不能這樣做。在C#中獲取唯一的系統標識符
欣賞提示,想法,示例代碼!
使用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
}
你可以做到這一點的多件硬件並提出解決方案。
我嘗試過......但我看到這些都是天,沒有任何序列號正在維護。母板,處理器...... MAC正在通過更改NIC來更改......要選擇什麼? – Rick2047 2010-08-25 14:58:38
因爲Win32_BaseBoard SerialNumber在大多數情況下不會返回值,所以最好的選擇是Win32_Processor中的ProcessorID – CJxD 2012-03-22 16:49:31
請注意,對於相同類型的所有處理器,ProcessorID是相等的。如果你測試兩個i7-FooBar處理器,兩者都有相同的ID。 – ANeves 2018-03-05 18:40:17
您可以在C#中使用WMI以獲取相關的硬件信息。
硬盤ID和以太網MAC地址是在系統識別方案中使用的兩個常見的唯一標識符。理論上,MAC地址是每個網卡唯一的。
從理論上講,但實際上沒有可以使用的唯一的唯一ID,因爲有噸並且易於訪問,所以最好抓住兩個或三個結合他們創建一個唯一的字符串(或散列) – 2009-08-20 21:38:31
是的,我同意。這就是爲什麼「在理論上」:) – 2009-08-20 21:48:49
您可以使用System.Management命名空間獲取與硬件,ProcessorId,MAC地址以及更多信息相關的所有內容,然後您可以將它們散列在一起。
看看這篇文章:
http://www.codeproject.com/KB/system/GetHardwareInformation.aspx
要擴大這個和其他答案一點點: 網卡的MAC地址將是唯一的,即使機器都使用相同的組件。我會從那開始。 其次,你應該能夠獲得主板和CPU序列號,正如JP所說。 這些加上物理網卡的MAC地址應該足夠容易地唯一標識一臺機器。請注意,如果更換部件,所有這些都可能會發生變化。 – 2009-08-20 22:01:19
網卡的MAC地址可以通過軟件設置,因此您不能指望它是唯一的。另一方面,我認爲主盤+ MAC地址+ processorId +主板可能是一個安全的選擇。 – 2009-08-20 22:37:48
假設你正在談論的Windows,那麼每個Windows安裝都有一個唯一的產品ID(當您查看我的電腦的性能,你可以看到) 。我認爲這存儲在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion:ProductId(REG_SZ)
。我比你想要的更多嗎?
這看起來酷酷。 – Rick2047 2010-08-25 15:00:40
你可以考慮使用GUID's
+1 Microsoft的GUID實現使用MAC地址和當前時間,所以它們幾乎是一種創建標識符的有保證的方式,這些標識符在每臺計算機上都是唯一的。 – 2009-09-13 10:34:42
網卡的MAC地址:
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
// probably need to do some filtering on ni.NetworkInterfaceType here
Console.WriteLine(ni.GetPhysicalAddress());
}
雖然這是一個好主意,但是如果系統沒有NIC,它就會失敗! – Smith 2011-10-15 15:26:23
這不是一個好主意,因爲當用戶禁用連接或軟件安裝虛擬連接時,此id會發生變化 – 2015-07-10 10:40:38
我會小心這個,你不會讓你的客戶討厭你。他們應該能夠更改網卡,硬盤和內存大小,而不必告訴你。 – 2009-08-21 00:39:20
噢,這個要求實際上來自*客戶:) – Alex 2009-08-21 01:40:28