Java 程序获取 Windows 机器的 CPU 序列号
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 序列号的不同方法。