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||line.indexOf("物理地址") > 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());

}

}

注:获取MAC的方法有问题,其思路是执行ipconfig /all命令并获取输出结果中的物理地址的值,但是在win7上测试时,ipconfig /all命令的输出结果中有多个物理地址,代码中取得的是最后一个地址,其准确性有待考证。另:仅适用于windows系统,linux时需要修改代码,如linux下查看ip地址的命令是ifconfig而不是ipconfig。

java获取计算机硬件参数的更多相关文章

  1. Java获取函数参数名称

    原理 编译之后的class文件默认是不带有参数名称信息的,使用 IDE 时,反编译jar包得到的源代码函数参数名称是 arg0,arg1......这种形式,这是因为编译 jar 包的时候没有把符号表 ...

  2. Java获取方法参数名、Spring SpEL解析

    @Test public void testParse() { //表达式解析 ExpressionParser expressionParser = new SpelExpressionParser ...

  3. Java 获取url参数

    1. 方式一:使用HttpServletRequest对象 String id = arg0.getParameter("id"); mv.addObject("id&q ...

  4. java获取request中的参数、java解析URL问号后的参数

    java获取request中的参数.java解析URL问号后的参数.有时候我们需要从request中获取参数,或者获取拼接在Url后面的参数,有时候一个一个去拿有点麻烦,一起拿出来放在一个map里面需 ...

  5. java 获取url及url参数解析

    java  获取url及url参数解析 一.url编码:URLEncoder.encode(userName); 二.url解码: URLDecoder.decode(userName);

  6. 【java】java获取JVM启动参数 System.getProperty

    java获取JVM启动参数 System.getProperty取 -D后的key即可 public class Test { public static void main(String[] arg ...

  7. java 获取request中的请求参数

    1.get 和 post请求方式 (1)request.getParameterNames(); 获取所有参数key后.遍历request.getParameter(key)获取value (2)re ...

  8. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  9. 学习SpringMVC——如何获取请求参数

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView) ...

随机推荐

  1. JSP三大指令 /9大内置对象 /Javabean / EL

    一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info="xxx". ...

  2. python将图片转为base64编码

    import base64 f = open("m1.jpg", "rb") res = f.read() s = base64.b64encode(res) ...

  3. Jamie's Contact Groups

    poj2289:http://poj.org/problem?id=2289 题意:给定一个规模为n的名单,要将名单中的人归到m个组中,给出每个人可能的分组号,需要确定一种分配方案,是的最大规模的组最 ...

  4. Hyper Prefix Sets

    uva11488:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&am ...

  5. 了解 Windows Azure 存储计费 – 带宽、事务和容量

     我们收到关于如何估算 Windows Azure存储成本,以便了解如何更好地构建一个经济有效的应用程序的问题.在本文中,我们将从带宽.事务和容量这三种存储成本的角度探讨这一问题. 使用 Wind ...

  6. unity3d Realistic eye shading 真实的眼睛渲染

    先放上效果 人皮都做了,当然要来研究下眼睛,眼睛要比人体皮肤简单一些(实时模拟人皮在此) 一看是不是很复杂 这是眼睛的解构,但是,我们只需要模拟出虹膜巩膜和角膜就能达到相当真实的眼睛 巩膜就是白眼球 ...

  7. 【转】Unity3D NGUI事件 UIEvents

    原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:[119706192] 本文链接地址: Unity3D NGUI事件 UIEvents UIEvents-事件系统void OnH ...

  8. javad的Collection集合

    集合框架:★★★★★,用于存储数据的容器. 特点: 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:对象的个数确定可以使用数组,但是不确定怎么办?可以用集合.因为集合是可变长度的. 集合 ...

  9. bzoj 2286 [Sdoi2011]消耗战(虚树+树上DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2286 [题意] 给定一棵树,切断一条树边代价为ci,有m个询问,每次问使得1号点与查询 ...

  10. 长沙Uber优步司机奖励政策(1月18日~1月24日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...