您的位置:首页 > 编程语言 > Java开发

WMIC查询获取本地硬件信息(主板型号,硬盘序列号,CPU参数等)

2014-10-31 16:34 267 查看
这次负责一个小模块,做一个本地服务程序获取本机的硬件信息,组装成XML文件。

 

语言:Java

平台:Windows 2003及以上的各版本Windows

 

因为在Windows系统上有非常强大的WMIC(Windows ManagementInstrumentation)工具, WMIC工具获得本计算机的相关信息。

 

WMIC

WMIC使用了别名机制,通过我们可以理解的语言来操作复杂的WMI命名空间。通过这个这个工具我们可以用简单的WQL(类似SQL)语句,通过一个简单的Get命令就可以得到我们需要的信息。

 

比如 

 wmic os get name. //得到操作系统的名称。
wmic logicaldisk get caption //获得磁盘的逻辑分区信息
WMIC 的使用基本不需要教程,因为它的帮助功能非常方便。在任何一个分级都可以通过 /?选项获得详细的帮助消息。

 

比如 

 wmic os get /?
 

获取计算机信息

由于java是跑在jvm上的,因此想要调用wmic需要先获的runtime对象,然后获得运行后的process的输入流,然后通过java对流的处理来处理获得数据。

 

Process proc = runtime.exec("cmd /c" + {wmic语句});
InputStream input = proc.getInputStream();

我主要用到的是get语句,其结果会以 title \n \n result的格式呈现,因此为了处理方便,可以封装成bufferReader,然后通过两次Readline去掉前两行,直接获得结果数据。

 

BufferReader br = new BufferedReader(newInputStreamReader(proc.getInputStream());
<span style="white-space:pre"> </span>for(int i = 0; i < 2; i ++) { //两次循环去掉标题栏,只获取结果数据
<span style="white-space:pre"> </span>br.readLine();
<span style="font-family: Arial, Helvetica, sans-serif;">         }                </span>
<span style="white-space:pre">	</span>result += br.readLine();                                //结果数据只占一行,所以一次读完


 

另外wmic还有一个很重要的list语句,其使用同样可以通过list /? 得到帮助。一般对于某个alias可以先 wmic [alias] list brief 获得其主要参数,如果结果不满足需求还可以直接list full,这里的full是缺省参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  wmic java 硬件
相关文章推荐