Archive

文章標籤 ‘unique ID’

如何找尋電腦唯一值 for Java

2010年1月11日 尚無評論

最近有需要找到電腦的唯一值來處理 (就是要如何鎖主機啦)

首先,能當一台電腦的唯一值(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,目前他支援的平台如下:

  • Linux i386, x86-64, ia64
  • FreeBSD i386, x86-64
  • NetBSD i386, x86-64
  • OpenBSD i386
  • BeOS i386
  • Cygwin i386
  • Solaris x86

  • 該官網在此
    http://www.nongnu.org/dmidecode/ ,他可以取得的系統資訊約有39 種,列表如下:

  • Type   Information
          —————————————-
             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就可以啦!!

  • Categories: JAVA Tags: , ,