获取 Windows 机器 CPU 序列号的Java程序
CPU 序列号(或处理器序列号)是一个软件可读的唯一序列号,英特尔已将其印在其 Pentium 3 微处理器中。英特尔将此作为一项功能提供,可选择使用该功能来提供某些网络管理和电子商务优势。基本上,它可以让程序识别单个 PC。
我们可以通过两种方式获取 Windows 机器的 CPU 序列号:
- 通过在 Windows PowerShell 上运行命令。
- 在Java使用 FileWriter 类
方式一:运行PowerShell命令
这是一个类似的方式,我们说什么在Mac终端运行命令。对于 Windows,它是 CMD,我们在下面有一个单行预定义命令。您只需将其写为 ities 或从此处复制相同内容,如下所示:
句法:
WMIC BIOS GET SERIALNUMBER
将出现此弹出窗口,让我们显示 Windows 机器的 CPU 序列号。
方式 2:使用 FileWriter 类
Java .io 包的Java FileWriter类用于将字符形式的数据写入文件。
- 该类继承自 OutputStreamWriter 类,后者又继承自 Writer 类。
- 此类的构造函数假定默认字符编码和默认字节缓冲区大小是可接受的。要自己指定这些值,请在 FileOutputStream 上构造一个 OutputStreamWriter。
- FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream。
- 如果文件不存在,则 FileWriter 创建输出文件。
例子
Java
// Java Program to get CPU Serial Number of Windows Machine
// using FileWriter class
// Importing required classes
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
// Main class
// WindowsCpuSerialNumber
public class GFG {
// Method 1
// To get CPU serial number
private static String getWindowsCPU_SerialNumber()
{
// Initially declaring and initializing an empty
// string
String result = "";
// Try block to check for exceptions
try {
// Creating an object of File class
File file
= File.createTempFile("realhowto", ".vbs");
// Deleting file while exiting
file.deleteOnExit();
// Creating an object of FileWriter class to
// write on
FileWriter fw = new java.io.FileWriter(file);
// Remember the command
String vbs1
= "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
+ "Set colItems = objWMIService.ExecQuery _ \n"
+ " (\"Select * from Win32_Processor\") \n"
+ "For Each objItem in colItems \n"
+ " Wscript.Echo objItem.ProcessorId \n"
+ " exit for ' do the first cpu only! \n"
+ "Next \n";
// Writing on file
fw.write(vbs1);
// Closing all file connections to
// release memory spaces
fw.close();
Process p = Runtime.getRuntime().exec(
"cscript //NoLogo " + file.getPath());
BufferedReader input = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line;
while ((line = input.readLine()) != null) {
result += line;
}
input.close();
}
// Catch block to handle the exceptions
catch (Exception E) {
// Print the exception along with the message
System.err.println("Windows CPU Exp : "
+ E.getMessage());
}
return result.trim();
}
// Method 2
// Main driver method
public static void main(String[] args)
{
String cpuSerialNumber
= getWindowsCPU_SerialNumber();
// Calling the method1 to retrieve CPU serial number
// and printing the same
System.out.println(
"CPU Serial Number of my Windows Machine: "
+ cpuSerialNumber);
}
}
输出:
下面是在 FileWriter 类的帮助下在 Windows 机器上运行时的硬编码输出。
Note: In addition to this if these programs are windows specific and should not be run on other operating systems. Approach 1 will not work and for approach 2 that is the above approach been laid via FileWriter class if, on Mac the output is as follows. It is because ‘cscript’ cant be run on the terminal.