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获取,急用!!!!

用java获得机器的唯一号

批处理 命令获取主板序列号 硬盘序列号 CPU ID?

java如何读取本机硬盘ID号码?

使用WMI编程获取主机硬件信息(CPU_ID,硬盘主板BIOS序列号,Mac地址)

C# 获取本机CPU序列号,MAC地址,硬盘ID,本机IP地址,计算机名,物理内存,PC类型