Java获取当前操作系统的信息

2016-11-25 09:43:00|?次阅读|上传:jifeng520qq【已有?条评论】发表评论

关键词:Java|来源:唯设编程网

1获取本机的IP地址:
private static String getIpAddress() throws UnknownHostException {
InetAddress address = InetAddress.getLocalHost();
     return address.getHostAddress();
}
 
如果操作系统是中文语言的就获取不到相关的信息.
 
获得MAC Address的方法:
可以使用:NetworkInterface.getByInetAddress(InetAddress.getLocalHost()).getHardwareAddress();
 
2获得网卡地址:
  public static String getMACAddress(){  
        String address = "";  
  
        String os = System.getProperty("os.name");  
        String osUser=System.getProperty("user.name");  
        if (os != null && os.startsWith("Windows")) {  
  
            try {  
  
                String command = "cmd.exe /c ipconfig /all";  
                  
                Process p = Runtime.getRuntime().exec(command);  
  
                BufferedReader br =new BufferedReader(new InputStreamReader(p.getInputStream()));  
  
                String line;  
  
                while ((line = br.readLine()) != null) {  
  
                    if (line.indexOf("Physical Address") > 0) {  
  
                        int index = line.indexOf(":");  
  
                        index += 2;  
  
                        address = line.substring(index);  
  
                        break;  
  
                    }  
  
                }  
  
                br.close();  
  
                return address.trim();  
  
            }  
  
            catch (IOException e) {  
            }  
  
        }  
        return address;  
  
    }  
 
 
3获得操作系统帐号:
String osUser=System.getProperty("user.name");  
 
 
4获得操作系统版本
   import java.util.Properties;    
     
   Properties props=System.getProperties(); //获得系统属性集    
   String osName = props.getProperty("os.name"); //操作系统名称    
   String osArch = props.getProperty("os.arch"); //操作系统构架    
   String osVersion = props.getProperty("os.version"); //操作系统版本
 
 
 
5一些常用的信息获得:
public static String getProperty(String key)   
 
     键                                                                  相关值的描述  
java.version                                                  Java 运行时环境版本  
java.vendor                                                  Java 运行时环境供应商  
java.vendor.url                                             Java 供应商的 URL  
java.home                                                   Java 安装目录  
java.vm.specification.version                      Java 虚拟机规范版本  
java.vm.specification.vendor                       Java 虚拟机规范供应商  
java.vm.specification.name                         Java 虚拟机规范名称  
java.vm.version                                           Java 虚拟机实现版本  
java.vm.vendor                                           Java 虚拟机实现供应商  
java.vm.name                                              Java 虚拟机实现名称  
java.specification.version                             Java 运行时环境规范版本  
java.specification.vendor                             Java 运行时环境规范供应商  
java.specification.name                              Java 运行时环境规范名称  
java.class.version                                       Java 类格式版本号  
java.class.path                                            Java 类路径  
java.library.path                                          加载库时搜索的路径列表  
java.io.tmpdir                                              默认的临时文件路径  
java.compiler                                             要使用的 JIT 编译器的名称  
java.ext.dirs                                               一个或多个扩展目录的路径  
os.name                                                    操作系统的名称  
os.arch                                                      操作系统的架构  
os.version                                                  操作系统的版本  
file.separator                                            文件分隔符(在 UNIX 系统中是“/”)  
path.separator                                          路径分隔符(在 UNIX 系统中是“:”)  
line.separator                                            行分隔符(在 UNIX 系统中是“/n”)  
user.name                                                 用户的账户名称  
user.home                                                 用户的主目录  
user.dir                                                      用户的当前工作目录  
 
 
 
 
 
用JAVA获取硬盘序列号的方法:
 
希捷(Seagate)迈拓(Maxtor)西部数据(Western Digital)三星(SAMSUNG) 日立(HITACHI)等硬盘都有自己规定方式编号的硬盘序列号,所谓序列号就是硬盘编号。硬盘序列号是硬盘格式化时系统分配给硬盘的一组十六进制字符串,除分对硬盘重新进行格式化,硬盘序列号是不会改变的。所以,很多软件都会以硬盘序列号判断用户是否合法用户。 
 
C#,C++等语言获取硬盘序列号方法很多很方便,但是JAVA的方法不多见。以下是JAVA获取硬盘序列号的一种方法,仅供参考。 
 
返回的字符串HDserialnumber就是所需要的硬盘序列号:
 
String HDserialnumber=getHdSerialInfo() ; 
public static String getHdSerialInfo() {
  String line = "";
  String HdSerial = "";//定义变量 硬盘序列号
  try {
   Process proces = Runtime.getRuntime().exec("cmd /c dir c:");//获取命令行参数
   BufferedReader buffreader = new BufferedReader(
     new InputStreamReader(proces.getInputStream()));
   while ((line = buffreader.readLine()) != null) {
    if (line.indexOf("卷的序列号是 ") != -1) {  //读取参数并获取硬盘序列号
     HdSerial = line.substring(line.indexOf("卷的序列号是 ")
       + "卷的序列号是 ".length(), line.length());
     break;
     // System.out.println(HdSerial);
    }
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return HdSerial;//返回硬盘序列号 卷的序列 非物理
}
 
 
 
============================================================================================
Java通过批处理命令获取MAC地址:
 
 
 
许多程序都通过MAC地址保证软件的唯一性,C#,C++等语言获取MAC地址方法很多很方便,但是JAVA的方法不多见,使用操作系统题提供的批处理命令获取MAC地址是非常方便的,而Java可以方便的运行批处理命令,再通过分析命令执行的结果字符串可以得到对应的MAC地址。本文就以Window和Linus分别进行说明,介绍使用Java获取Windows和Linux系统环境下使用批处理命令得到MAC地址的方法,本机的代码在Windows 7中文旗舰版测试成功。
 
以windows举例,我们可以在CDM命令窗口通过ipconfig /all得到网络相关的详细信息,linux与之类似,只是我们使用的shell脚本是ifconfig -a,我们可以通过Runtime的getRuntime得到当前运行环境,Runtime的exec可以执行操作系统支持的脚本命令,返回Process变量可以通过getInputStream分析对应的文本内容。
 
//使用批处理命名得到MAC地址
public static String getMACAddress() {
    String address = "";
    String os = getOsName();
    if (os.startsWith("Windows")) {
        try {
            String command = "cmd.exe /c ipconfig /all";
            Process p = Runtime.getRuntime().exec(command);
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    p.getInputStream()));
            String line;
            while ((line = br.readLine()) != null) {
                //如果操作系统为中文,将下面的字符串改成"物理地址"
                //如果操作系统为英文,将下面的字符串改成"Physical Address"
                if (line.indexOf("物理地址") > 0) {
                    int index = line.indexOf(":");
                    index += 2;
                    address = line.substring(index);
                    break;
                }
            }
            br.close();
            return address.trim();
        } catch (IOException e) {
        }
    } else if (os.startsWith("Linux")) {
        String command = "/bin/sh -c ifconfig -a";
        Process p;
        try {
            p = Runtime.getRuntime().exec(command);
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    p.getInputStream()));
            String line;
            while ((line = br.readLine()) != null) {
                if (line.indexOf("HWaddr") > 0) {
                    int index = line.indexOf("HWaddr") + "HWaddr".length();
                    address = line.substring(index);
                    break;
                }
            }
            br.close();
        } catch (IOException e) {
        }
    }
    address = address.trim();
    return address;
}
该方法调用了getOsName方法得到操作系统的名称,该方法的代码如下:
 
/**
 * 得到操作系统名称
 * @return
 */
public static String getOsName() {
String os = "";
os = System.getProperty("os.name");
return os;
}
获取操作系统相关信息通过System.getProperty完成,除得到操作系统名称之外,还可以得到主机的其它信息,这在后面的文章进行介绍。
 
第二种方法,就是使用"nbtstat -a "+ip地址命令得到ip地址,该方案的原理与上面的方法相似,也是通过BufferedReader分析命令结果对应的文本内容,下面给出对应的代码:
 
/***
 * 通过IP地址获取MAC地址
 * @param ipAddress
 * @return
 */
public static String getMACAddress(String ipAddress) {
    String str = "", strMAC = "", macAddress = "";
    try {
        Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);
        InputStreamReader ir = new InputStreamReader(pp.getInputStream());
        LineNumberReader input = new LineNumberReader(ir);
        for (int i = 1; i < 100; i++) {
            str = input.readLine();
            System.out.println(str);
            if (str != null) {
                if (str.indexOf("MAC 地址") > 1) {
                    strMAC = str.substring(str.indexOf("MAC 地址") + 9,
                            str.length());
                    break;
                }
            }
        }
    } catch (IOException ex) {
        return "Can't Get MAC Address!";
    }
    //
    if (strMAC.length() < 17) {
        return "Error!";
    }
 
    macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5)
            + ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11)
            + ":" + strMAC.substring(12, 14) + ":"
            + strMAC.substring(15, 17);
    //
    return macAddress;
}
测试代码如下:
public static void main(String[] args) {
    System.out.println("Operation System=" + getOsName());
    System.out.println("Mac Address=" + getMACAddress());
    System.out.println("通过ip获取mac地址:" + getMACAddress("192.168.1.100"));
}
最终得到的结果如下:
 
图片省略了、
 
 
到此,我们已经得到了本机对应的MAC地址
发表评论0条 】
网友评论(共?条评论)..
Java获取当前操作系统的信息