Java程式:獲取Windows和Linux系統主機板序列號


主機板序列號是分配給主機板計算機的ID。它通常用於追蹤計算機系統,並在系統丟失或被盜時進行識別。在本節中,我們將討論使用Java程式語言查詢Windows和Linux機器主機板序列號的不同方法。

主機板是計算機中非常重要的部件。它是計算機的骨幹。計算機中的所有元件都透過主機板進行通訊。主機板有助於確定諸如我們將獲得的RAM數量等因素,主機板有助於配置硬體,也有助於引導過程。主機板序列號是用於識別主機板的唯一編號。

在Windows和Linux機器上檢索主機板序列號的方法

讓我們首先討論程式中將使用的重要方法和語法:

Runtime.getRuntime().exec() − 它是Java中Runtime中的一個方法。此方法用於將命令列命令作為程序執行,稍後可以與其互動。它採用字串作為引數,該字串是一個命令列命令,並輸出該命令的程序物件。

Runtime.getRuntime().exec(command) ; // executes the command as a process.

BufferedReader() − BufferedReader()方法是Java中BufferedReader類的建構函式,並返回BufferedReader物件,該物件幫助我們從檔案或網路套接字等讀取文字。它將資料作為位元組讀取並將它們轉換為字元。它採用FileReader或InputStreamReader類的物件作為引數。

BufferedReader r = new BufferedReader(new InputStreamReader(System.in));

readLine() − 它是在Java的BufferReader類中存在的方法,它逐行讀取字元流並將其作為字串返回。此方法用於從BufferedReader物件讀取行。

BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
PrintWriter writer = new PrintWriter(new FileWriter("output.txt"));
while ((line = reader.readLine()) != null) {  //reading line by line  on BufferReader Object 
   writer.println(line.toUpperCase()); // writing in output.txt file.
}

trim() − 此方法用於刪除字串開頭和結尾的空格。它是Java中String類中的一個方法。

tring str = "   Hello, World!   ";
System.out.println(str.trim()); // Output: "Hello, World!"

現在我們將詳細討論使用示例來查詢Windows和Linux系統的母板序列號。

Windows機器的方法

在這種方法中,我們將使用“wmic”,這是一個用於處理Windows管理的命令列工具。“Wmic”代表“Windows Management Instrumentation Command-Line”。它可以幫助我們查詢Windows機器的主機板序列號。

演算法:使用WMI(Windows管理規範)

  • 透過傳遞wmic baseboard get serialnumber作為引數,使用Runtime.getRuntime().exec()方法建立一個程序物件。

  • 使用InputStreamReader作為引數建立一個BufferedReader物件,以讀取程序的輸出。

  • 使用readLine()方法讀取輸出並將其儲存在line變數中。

  • 使用trim()修剪空格,並在readLine()不為空時列印輸出。

示例

在這個例子中,程式碼使用命令列工具“wmic”(Windows管理規範命令)檢索當前系統的處理器ID。

使用Runtime類的exec()方法建立一個新的Process物件,並將命令“wmic baseboard get serialnumber”作為引數傳遞。此命令檢索當前系統CPU的處理器ID。

在下一條語句中,程序使用getOutputStream()方法關閉,並在返回的流上呼叫close()。這是因為任何要寫入程序的內容。現在建立了一個新的BufferedReader物件,並使用Process物件的getInputStream()方法用程序的輸入流對其進行初始化。

BufferedReader物件用於讀取程序的輸出。最後,程式碼使用BufferedReader物件的readLine()方法逐行讀取程序的輸出。如果該行不為空,則程式碼將修剪該行並使用System.out.println()將其列印到控制檯。

Java程式:獲取Windows和Linux系統主機板序列號

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
   public static void main(String[] args) {
      try {
         Process process = Runtime.getRuntime().exec("wmic baseboard get serialnumber");
         BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
         String line;
            while ((line = reader.readLine()) != null) {
            if (!line.trim().equals("SerialNumber")) {
               System.out.println("Motherboard Serial Number: " + line.trim());
            }
         }
         reader.close();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

輸出

Motherboard Serial Number: MB-1234567890

Linux機器的方法

在這種方法中,我們從Linux系統讀取檔案以獲取主機板序列號。要透過程式碼讀取的檔案位於/sys/class/dmi/id/board_serial。它是一個位於Linux系統sysfs檔案系統中的檔案,其中包含當前系統主機板的序列號。sysfs是一個虛擬檔案系統,它提供了對系統硬體裝置及其屬性的檢視。

演算法

  • 使用/sys/class/dmi/id/board_serial作為引數建立一個BufferedReader物件。

  • 使用readLine()方法讀取輸出並將其儲存在line變數中。

  • 列印line。

示例

在這種方法中,我們將讀取位於‘/sys/class/dmi/id/board_serial’的檔案。我們使用BufferReader物件讀取它,並將檔案位置作為引數傳遞給BufferReader建構函式。然後,我們使用readLine()方法讀取內容並將其儲存在BufferReader物件的變數中。儲存值後,我們將列印輸出。

import java.io.BufferedReader;
import java.io.FileReader;

public class Main {
   public static void main(String[] args) {
      try {
         BufferedReader reader =newBufferedReader( newFileReader("/sys/class/dmi/id/board_serial"));
         String line = reader .readLine();
         System.out.println("Motherboard Serial Number: " + line);
         reader.close();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

輸出

Motherboard Serial Number: MB-1234567890

因此,我們在本文中討論瞭如何使用Java程式語言查詢Windows和Linux機器的主機板序列號。

更新於:2024年6月24日

803 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.