CPU Serial Number (or Processor Serial Number) is a software-readable unique serial number that Intel has stamped into its Pentium 3 microprocessor. Intel offers this as a feature that can be optionally used to provide certain network management and e-commerce benefits. Basically, it lets a program identify individual PCs.
We can get the CPU Serial number of a Windows machine in 2 ways:
- By running the command on Windows PowerShell.
- Using FileWriter class in java
Way 1: Running PowerShell command
It is a similar way to what we say running commands on terminals on Mac. For windows, it’s CMD for which we do have a one-liner pred-defined command below. You simply need to write it as it is or copy the same from here which is given below as follows:
Syntax:
WMIC BIOS GET SERIALNUMBER
This pop-up window will appear letting us revealing the CPU serial number for the windows machine.
Way 2: Using FileWriter class
Java FileWriter class of java.io package is used to write data in character form to file.
- This class inherits from OutputStreamWriter class which in turn inherits from the Writer class.
- The constructors of this class assume that the default character encoding and the default byte-buffer size are acceptable. To specify these values yourself, construct an OutputStreamWriter on a FileOutputStream.
- FileWriter is meant for writing streams of characters. For writing streams of raw bytes, consider using a FileOutputStream.
- FileWriter creates the output file if it is not present already.
Example
// 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);
}
} |
Output:
Below is the hard-coded output when run on a Windows machine with the help of FileWriter class.
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.