Java 程序获取 Windows 机器的 CPU 序列号

javaobject oriented programmingprogramming更新于 2024/8/5 22:13:00

CPU 也称为 中央处理器,是计算机的大脑。它执行计算机中的所有主要操作。它也被称为中央处理器或主处理器。CPU 序列号是制造商为每个单独的中央处理器赋予该特定 CPU 的唯一标识符。其主要目的是跟踪和识别硬件以进行保修索赔。在本节中,我们将编写一个 Java 程序来获取 Windows 机器的 CPU 序列号。

CPU 有助于执行指令和所有数学运算。CPU 包含 3 个组件。第一个组件是存储单元。它用于存储信息、数据和操作结果。它还有助于传输数据。这是主存储器,也称为随机存取存储器。第二个组件是控制单元。它用于控制计算机的所有操作并协调计算机的所有单元。第三部分是算术逻辑单元 (ALU),用于执行计算机的所有算术和逻辑运算。

现在,我们将讨论使用 Java 查找 Windows 机器序列号的各种方法。

方法 1:使用 WMIC(Windows 管理规范命令行)

在此方法中,我们将在 Java 代码中使用"wmic"命令。"Wmic"是用于 Windows 管理的命令行工具。"Wmic"代表"Windows 管理规范命令行"。

算法

  • 通过传递 wmic cpu get ProcessorId 作为参数,使用 Runtime.getRuntime().exec() 方法创建一个进程对象

  • 使用 InputStreamReader 作为参数创建一个 BufferedReader 对象,以读取进程的输出

  • 使用 readLine() 方法读取输出并将其存储在"line"变量中

  • 当"line"不为空且 line 不等于空白时,使用 trim() 修剪空格并打印输出。

示例

在此示例中,代码使用命令行实用程序 "wmic"(Windows Management Instrumentation 命令)检索当前系统的 ProcessorId。

使用 exec() 方法创建一个新的 Process 对象Runtime 类,传递命令 "wmic cpu get ProcessorId" 作为参数。此命令检索当前系统 CPU 的 ProcessorId。

在下一个语句中,使用 getOutputStream() 方法关闭进程,并在返回的流上调用 close()。这是因为任何内容都要写入进程。现在创建一个新的 BufferedReader 对象,并使用 Process 对象的 getInputStream() 方法用进程的输入流对其进行初始化。BufferedReader 对象用于读取进程的输出。最后,代码使用 BufferedReader 对象的 readLine() 方法逐行读取进程的输出。如果该行不为空,代码将修剪该行并使用 System.out.println() 将其打印到控制台。

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

public class Main {
   public static void main(String[] args) {
      try {
         Process process = Runtime.getRuntime().exec("wmic cpu get ProcessorId");
         process.getOutputStream().close();
         BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
         String line;
         while ((line = reader.readLine()) != null) {
            if (!line.trim().equals("")){
               System.out.println(line.trim());
            }
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

输出

ProcessorId
BFEBFBFF000906E9

使用的方法

Runtime.getRuntime().exec() − 这是 Java 中 Runtime 类中的方法。此方法用于将命令行命令作为进程执行,稍后可以与之交互。它以字符串作为参数,即命令行命令,并输出命令的进程对象。

Runtime.getRuntime().exec(command) ; // 将命令作为进程执行。

BufferedReader() − BufferedReader() 方法是 Java 中 BufferedReader 类的构造函数,并返回 BufferedReader 对象,该对象可帮助我们从文件或网络套接字等读取文本。它将数据读取为字节并将其转换为字符。它以 FileReader 或 InputStreamReaader 类的对象作为参数。

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) { //在 BufferReader 对象上逐行读取
writer.println(line.toUpperCase()); // 写入 output.txt 文件。
}

trim() − 此方法用于删除字符串开头和结尾的空格。它是 Java 的 String 类中存在的方法。

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

方法 2:使用 getenv()

在这种方法中,我们将使用 System 类的 getenv() 并获取 Windows 计算机的 CPU 序列号。此方法用于根据传递给此方法的参数返回环境变量的值。它接受一个字符串参数并返回一个字符串值。此方法存在于 Java 的 System 类中。

System.getenv("PATH");

算法

  • 使用 System 的 getenv() 方法通过传递 PROCESSOR_IDENTIFIER 作为参数来获取 CPU 序列号

  • 打印该号码。

示例

在上面的示例中,我们使用了 Java System 类并使用内置的 getenv() 方法并传递 PROCESSOR_IDENTIFIER 参数,然后该方法返回一个字符串,即 CPU 序列号。现在我们将返回的值存储在字符串变量中并使用 println() 方法打印。

import  java.util.*;
public class Main {
   public static void main(String[] args) {
      String serialNumber = System.getenv("PROCESSOR_IDENTIFIER");
      System.out.println("CPU serial number: " + serialNumber);
   }
}

输出

CPU serial number: null

因此,在本文中,我们讨论了使用 Java 编程语言查找 Windows 机器的 CPU 序列号的不同方法。


相关文章