当你需要获得windows硬件细节时,java可能不是最好的工具。 简直无从下手,不过可以通过VBS脚本获得需要的数据,然后java调用VBS获得输出。

VBS脚本通过查询WMI来获得系统硬件信息。 我们需要Win32_BaseBoard类,更多可以参考 http://msdn2.microsoft.com/en-us/library/aa389273.aspx.

获得主板信息:

import java.io.File;

import java.io.FileWriter;

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class MiscUtils {

private MiscUtils() { }

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();

}

public static void main(String[] args){

String cpuId = MiscUtils.getMotherboardSN();

javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)

null, cpuId, "Motherboard serial number",

javax.swing.JOptionPane.DEFAULT_OPTION);

}

}

获得硬盘序列号:

import java.io.File;

import java.io.FileWriter;

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class DiskUtils {

private DiskUtils() { }

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();

}

public static void main(String[] args){

String sn = DiskUtils.getSerialNumber("C");

javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)

null, sn, "Serial Number of C:",

javax.swing.JOptionPane.DEFAULT_OPTION);

}

}

说明: 还可以获得其他更多属性如: objDrive.AvailableSpace/DriveType/FileSystem/IsReady

标签:

脚本

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点!

本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

java 序列号怎么获取,Java获得硬盘和主板的序列号代码相关推荐

  1. java get null_java 获取对象中为null的字段实例代码

    下面一段简单的代码给大家分享java 获取对象中为null的字段,具体代码如下所述: private static String[] getNullPropertyNames(Object sourc ...

  2. java判断白天黑夜,获取Java中的所有夜晚时间

    tl;博士 正如George Fox所说的那样,你问题的直接答案是使用逻辑OR而不是AND . 但是您的代码还有其他问题: 忽略 time zone 的关键问题 使用血腥 awful date-tim ...

  3. java 返回js_如何基于java或js获取URL返回状态码

    这篇文章主要介绍了如何基于java或js获取URL返回状态码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参fgLAeaGAH考下 描述:使用java或者 ...

  4. java 获取cup序列号_Qt获取CPU编号和硬盘序列号

    windows下执行命令除了用cmd之外,还有个东西叫WMIC,非常强大,可以通过他获取很多信息,包括硬件信息. QString frmMain::getWMIC(const QString & ...

  5. java获取当前项目相对路径,在JAVA文件中获取该项目的相对路径

    在JAVA文件中获取该项目的相对路径 1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.t ...

  6. java解析pdf获取pdf中内容信息

    java解析pdf获取pdf中内容信息 今日项目中需要将pdf中的数据获取到进行校验数据,于是前往百度翻来覆去找到以下几种办法,做个笔记,方便日后查询. 废话不多说,我要直接上代码装逼了 第一种 使用 ...

  7. java 怎么回到根目录,java中获取应用根目录

    java中动态获取项目根目录的绝对路径,,java获取项目根目录,java中获取应用根目录 www.bj-accp.com 获取 java 项目的根目录-方法大全一. 相对路径的获得 说明:相对路径( ...

  8. java使用siger 获取服务器硬件信息(CPU 内存 网络 io等)

    通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...

  9. (部署新java程序,程序报错,需copy的一个包)——java使用siger 获取服务器硬件信息...

    mcat-siger.sh  查看是否安装siger rsync -aPuv /usr/lib64/libsigar-amd64-linux.so $i:/usr/lib64/ java使用siger ...

  10. JAVA通过oshi获取系统和硬件信息

    OSHI 是基于 JNA 的(本地)操作系统和硬件信息库.它不需要安装任何其他额外的本地库,旨在提供一种跨平台的实现来检索系统信息,例如操作系统版本.进程.内存和 CPU 使用率.磁盘和分区.设备.传 ...

最新文章

  1. 下列关于python字典变量的定义中错误的是_python练习题-day14
  2. IPV6在WINXP、WIN2003、WIN7下的网络配置
  3. python数据分析类库_python数据分析类库系列-Pandas入门之数据结构Series
  4. boost::graph模块实现bellman算法的测试程序
  5. 降低代码执行中得内存消耗_微服务中使用 OpenJ9 JVM内存占用降低60%!
  6. 【转】图片轮播效果2
  7. shell实战之日志脱敏
  8. 清理Visual Studio最近打开的项目、文件、查找内容和最近引用组件
  9. Linux 挂载和卸载U盘
  10. c++实现通讯录制作
  11. 用例图分析---学生成绩管理系统
  12. Echarts滚动条
  13. 致敬!百里煤海战斗在第二战线上的人们
  14. html5怎么把图片置顶,html/css如何让图片上下居中(居中垂直)?
  15. wifi模块php,什么是Wifi模块 Wifi模块功能有哪些
  16. 阿里云盾AliYunDun服务IO超高
  17. 学习如何使用 Git 来压扁、变基和精选
  18. Burpsuite字符偏移修正
  19. SecureCRT工具介绍
  20. Smart Contract Vulnerabilities:Vulnerable Does Not Imply Exploited总结

热门文章

  1. [Lync]lync同步通讯簿
  2. mysql认证 成都考点_CKA概述、考试形式、考试地址、考纲占比等
  3. 和生活一起理解51单片机② 先利其器,开箱51单片机开发板
  4. 51单片机(AT89S52)设计简单计算器(4位加减乘除)
  5. c语言学习指南app,c语言学习手册app
  6. c#登陆qq空间无视JS加密
  7. 计算机电池电源转换,整套解决方案:笔记本电脑的外部电源和电池如何实现无缝切换?...
  8. Linux 安装字体
  9. matlab打不开怎么办,matlab打不开_matlab打不开怎么办 matleb打不开的修复方法
  10. 基于Linux系统PXE启动DOS工具