如何找尋電腦唯一值 for Java
最近有需要找到電腦的唯一值來處理 (就是要如何鎖主機啦)
首先,能當一台電腦的唯一值(unique id) 應該就是主機版的ID,CPU ID,及網路卡的MAC
在JAVA API 裡翻了很久,就是找不到有這類型的資訊,頂多只能拿到相關的環境變數
在網路上找了一些方式,果然,現行JAVA標準的API 似乎是沒有提供這資訊
整理好分享給大家
如果就只要找到唯一值,最完整的解決方式,可以參考
http://johannburkard.de/software/uuid/
他提供的元件,就是實作各平台如何取到電腦的唯一值,所以只要用一種方式
就可以在各平台上運行,這也是JAVA的宗旨呀!!
不過,他使用的似乎是網卡的MAC,如果電腦換了網卡似乎就出了問題
所以如果很在意的,就只能用CPU ID 或是主機板 ID 來當唯一值
如果是主機板ID,以下有兩篇文篇是有提到如何查到這ID,不過都要透過其它的程式取得
1.這篇寫的很完整,連JAVA Code都有了,就是呼叫一隻vbs幫忙取得資計
http://www.rgagnon.com/javadetails/java-0580.html
不過要注意,這vbs程式只適用32 bit 的windows平台,所以非所有的windows 都可以使用,所以要使用前請評估細。
2.這篇是提到在.NET時如何取得CPU ID 及主機板 ID,變的更簡單了就像下SQL 指令一樣。不過,如要讓JAVA透過此方式取得這些資訊,就要再多花點時點做API了而且還要先裝.Net Framework才行
http://codeglobe.blogspot.com/2009/02/how-to-retrieve-processoridmotherboard.html
上述只能在windows 平台上運行正常,如果你的程式只在windows上運行就沒什麼差別
但如果你的程式是想跨平台執行的,就可能自己要再多花些工夫啦
而再來要介紹有一GNU License 套件 可以在其它平台取得相關所需的資訊,就是dmidecode,目前他支援的平台如下:
該官網在此http://www.nongnu.org/dmidecode/ ,他可以取得的系統資訊約有39 種,列表如下:
—————————————-
0 BIOS
1 System
2 Base Board
3 Chassis
4 Processor
5 Memory Controller
6 Memory Module
7 Cache
8 Port Connector
9 System Slots
10 On Board Devices
11 OEM Strings
12 System Configuration Options
13 BIOS Language
14 Group Associations
15 System Event Log
16 Physical Memory Array
17 Memory Device
18 32-bit Memory Error
19 Memory Array Mapped Address
20 Memory Device Mapped Address
21 Built-in Pointing Device
22 Portable Battery
23 System Reset
24 Hardware Security
25 System Power Controls
26 Voltage Probe
27 Cooling Device
28 Temperature Probe
29 Electrical Current Probe
30 Out-of-band Remote Access
31 Boot Integrity Services
32 System Boot
33 64-bit Memory Error
34 Management Device
35 Management Device Component
36 Management Device Threshold Data
37 Memory Channel
38 IPMI Device
39 Power Supply
如果有需要的人,請自行找Google大師查詢一下囉!!
在此要特別說一下,如果你下 –t 是出現 「 No such file or directory 」就是你Linux 老舊啦,小弟的測試Linux平台就是太舊了,預設這個套件的版本太舊不認得 type 參數,請自行上網下載make就可以啦!!
近期留言