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

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

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

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

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

方法1:使用wmic(Windows管理工具命令行)

在这种方法中,我们将在Java代码中使用 “wmic” 命令。wmic是用于与Windows管理工作的命令行工具。wmic代表“Windows管理工具命令行”。

步骤

  • 使用 Runtime.getRuntime().exec() 方法创建一个进程对象,将 wmic cpu get ProcessorId 作为参数传递
  • 使用 InputStreamReader 作为参数创建一个BufferedReader对象,读取进程的输出
  • 使用 readLine() 方法读取输出并将其存储在”line”变量中
  • 当”line”不为null且line不等于空白时,使用 trim() 修剪空格并打印输出

示例

在这个例子中,代码使用命令行实用程序 “wmic” (Windows管理工具命令)检索当前系统的处理器ID。

使用 Runtime 类的exec()方法创建一个新的Process对象,将命令 “wmic cpu get ProcessorId” 作为参数传递。这个命令检索当前系统CPU的处理器ID。

在下一个语句中,使用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类中的一个方法。该方法用于执行一个命令行命令作为一个进程,并且之后可以与其进行交互。它接受一个String参数,该参数是一个命令行命令,并输出该命令的进程对象。

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

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) {  //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!"

方法2:使用getenv()

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

System.getenv("PATH");

步骤

  • 使用系统的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序列号的不同方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程