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

这次负责一个小模块,做一个本地服务程序获取本机的硬件信息,组装成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());
	for(int i = 0; i < 2; i ++)  {                           //两次循环去掉标题栏,只获取结果数据
    		br.readLine();
         }                
	result += br.readLine();                                //结果数据只占一行,所以一次读完


 

另外wmic还有一个很重要的list语句,其使用同样可以通过list /? 得到帮助。一般对于某个alias可以先 wmic [alias] list brief 获得其主要参数,如果结果不满足需求还可以直接list full,这里的full是缺省参数。

你可能感兴趣的:(java)