java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)(转)

http://blog.csdn.net/flyingcloude/article/details/9417825

 

import  java.io.BufferedReader;
import  java.io.File;
import  java.io.FileWriter;
import  java.io.InputStreamReader;
import  java.io.LineNumberReader;
 
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 ) {
 
                     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());
     }
 
}

 Linux

命令:

0、查看CPUID:dmidecode -t processor | grep 'ID'

1、查看服务器型号:dmidecode | grep 'Product Name'

2、查看主板的序列号:dmidecode |grep 'Serial Number'

3、查看系统序列号:dmidecode -s system-serial-number

4、查看内存信息:dmidecode -t memory

5、查看OEM信息:dmidecode -t 11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值