2014-02-06 69 views
9

我正在尋找一個對於每個獨立於平臺的計算機都是唯一的值。這是爲了將機器註冊到帳戶,以便您不能從未註冊的機器登錄。我不想使用MAC地址,因爲這可以很容易地改變。我想知道可能會從幾個硬件組件獲取ID並將它們組合起來以獲得機器的唯一ID。但是,我不確定如何使用Java從所述組件獲取ID。我做了一些研究,發現了一種檢索CPU序列號的方法,但這隻適用於windows,因爲它只是運行一個臨時的可視化基本命令/腳本/不管。任何信息表示讚賞,謝謝。獨立於平臺的唯一計算機ID java

+3

對於用戶空間應用程序,一切都很容易被欺騙。大多數商品硬件甚至沒有將閃存插入某種只讀存儲器的唯一ID。 – 2014-02-06 16:46:52

+2

請參閱這裏的討論http://stackoverflow.com/questions/2004666/get-unique-machine-id – Leo

+1

謝謝你的迴應,我仍然不確定我可以如何去做這件事。 – user1009569

回答

0

對於能夠僞造MAC地址,您是正確的。有沒有機器的你不能欺騙這種或那種方式,這就是爲什麼機器具體識別通常是一個壞主意。對Java而言,這是一個更糟糕的想法,因爲Java的全部內容都是從硬件中抽象出來的。這實際上只能讓你使用JVM和網絡堆棧來獲取詳細信息。

所以我只能看到兩個選項。

首先,您可以嘗試生成主機名,當前類路徑,系統屬性和JVM值的某種組合的哈希。沿着這條線你可能會看到你從System.getenv()或System.getProperties()獲得什麼值

第二種方法是使用本地運行時API返回系統特定的值,但你需要具有特定的值命令爲您的客戶端試圖支持的每種操作系統類型運行。示例:

Runtime.getRuntime()。exec(「some_command_line_prog_that_returns_sys_info」);