2009-09-15 33 views

回答

1

命令行的典型做法是使用dmidecode或lshw,它讀取BIOS DMI區域並解析序列號。但是,如果您的應用程序不以root身份運行,這將不起作用,因爲它需要能夠讀取/ dev/mem。

您可以通過HAL獲取一些此信息。我不完全確定如何通過HAL直接執行此操作,但是您可以通過lshal命令執行此操作。在其中一個顯示的設備中,您應該看到「system.hardware.serial」和「system.hardware.uuid」的條目 - 這些是主板的序列號和UUID。

您可以從猛砸查詢HAL是這樣的:

PC=`hal-find-by-property --key info.product --string Computer` 
PC_UUID=`hal-get-property --udi $PC --key system.hardware.uuid` 
PC_SERIAL=`hal-get-property --udi $PC --key system.hardware.serial` 

在老機器,這些密鑰可能是 「smbios.system.uuid」 和 「smbios.system.serial」 代替。另外,請注意,這些信息可能不在所有機器上,或者完全是假的。我至少有一個UUID完全由1組成的主板,另一個主板的CPU序列號幾乎全爲零。

1

我看到兩個潛在的方法:你的代碼中

  • 開始使用uname /主板信息控制檯程序,使用ProcessStartInfo.RedirectStandardInput(和output/error)來解析輸出
  • 使用DllImport指令訪問正確的C函數(如果uname -a不夠好)。請記住相應地設置您的LD_LIBRARY_PATH,以便可以找到共享庫。
相關問題