Java获取硬盘,CPU等信息

本文介绍了一个Java程序,该程序能够获取计算机的主要硬件信息,包括CPU序列号、硬盘序列号及主板序列号等。通过调用Windows Management Instrumentation Command-line (WMIC) 和创建临时VBS脚本的方法,实现了对这些硬件信息的有效读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.sun.pcInfo;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class GetPcInfo{
 
	public static void main(String[] args) throws IOException {
		// 获取CPU序列号
		getCpuInfo();
		
		// 获取硬盘序列号
		String sn = getSerialNumber("C");
		System.out.println(sn);

		// 获取主板序列号
		String cpuId = getMotherboardSN();
		System.out.println(cpuId);
	}
	
	// 获取CPU序列号
	@SuppressWarnings("resource")
	private static void getCpuInfo() throws IOException {
		  Process process = Runtime.getRuntime().exec(
		    new String[] { "wmic", "cpu", "get", "ProcessorId" });
		  process.getOutputStream().close();
		  Scanner sc = new Scanner(process.getInputStream());
		  String property = sc.next();
		  String serial = sc.next();
		  System.out.println(property + ": " + serial);
	}
	
	// 获取硬盘序列号
	// wmic diskdrive get SerialNumber
	public static String getSerialNumber(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();
	}

	// 获取主板序列号
	// 主板厂商:wmic BaseBoard get Manufacturer
	// 主板型号:wmic BaseBoard get Product
	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();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值