java 能不能获取CPU的ID号,硬盘的序列号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 能不能获取CPU的ID号,硬盘的序列号相关的知识,希望对你有一定的参考价值。
参考技术A 能,import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
public class HardWareUtils
/**
* 获取主板序列号
*
* @return
*/
public static String getMotherboardSN()
String result = "";
try
File file = File.createTempFile("realhowto", ".vbs");
file.deleteOnExit();
FileWriter fw = new java.io.FileWriter(file);
String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
+ "Set colItems = objWMIService.ExecQuery _ \n"
+ " (\"Select * from Win32_BaseBoard\") \n"
+ "For Each objItem in colItems \n"
+ " Wscript.Echo objItem.SerialNumber \n"
+ " exit for ' do the first cpu only! \n" + "Next \n";
fw.write(vbs);
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 (Exception e)
e.printStackTrace();
return result.trim();
/**
* 获取硬盘序列号
*
* @param drive
* 盘符
* @return
*/
public static String getHardDiskSN(String drive)
String result = "";
try
File file = File.createTempFile("realhowto", ".vbs");
file.deleteOnExit();
FileWriter fw = new java.io.FileWriter(file);
String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"
+ "Set colDrives = objFSO.Drives\n"
+ "Set objDrive = colDrives.item(\""
+ drive
+ "\")\n"
+ "Wscript.Echo objDrive.SerialNumber"; // see note
fw.write(vbs);
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 (Exception e)
e.printStackTrace();
return result.trim();
/**
* 获取CPU序列号
*
* @return
*/
public static String getCPUSerial()
String result = "";
try
File file = File.createTempFile("tmp", ".vbs");
file.deleteOnExit();
FileWriter fw = new java.io.FileWriter(file);
String vbs = "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";
// + " exit for \r\n" + "Next";
fw.write(vbs);
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();
file.delete();
catch (Exception e)
e.fillInStackTrace();
if (result.trim().length() < 1 || result == null)
result = "无CPU_ID被读取";
return result.trim();
/**
* 获取MAC地址
*/
public static String getMac()
String result = "";
try
Process process = Runtime.getRuntime().exec("ipconfig /all");
InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null)
if (line.indexOf("Physical Address") > 0)
String MACAddr = line.substring(line.indexOf("-") - 2);
result=MACAddr;
catch (java.io.IOException e)
System.err.println("IOException " + e.getMessage());
return result;
public static void main(String[] args)
System.out.println("CPU SN:"+HardWareUtils.getCPUSerial());
System.out.println("主板 SN:"+HardWareUtils.getMotherboardSN());
System.out.println("C盘 SN:"+HardWareUtils.getHardDiskSN("c"));
System.out.println("MAC SN:"+HardWareUtils.getMac());
以上是关于java 能不能获取CPU的ID号,硬盘的序列号的主要内容,如果未能解决你的问题,请参考以下文章
java获取CPU与硬盘的ID号?或调用JNI获取,急用!!!!