Java 判斷操作系統類型(適用于各種操作系統)

ngmm 9年前發布 | 2K 次閱讀 Java

最近一段時間寫一個授權的程序,需要獲取很多信息來保證程序不能隨意復制使用,必須經過授權才可以。

為了限制用戶使用的操作系統,必須有統一的方法來獲取才可以。

在JAVA中,通過System.getProperty("os.name")來獲取,通過參考:http://lopica.sourceforge.net/os.html 來實現各操作系統的判斷。

針對windows系統,這里不具體判斷是那個版本,如果有需要,可以在判斷出windows之后,繼續判斷,判斷需要考慮java的版本,版本不同,結果也不一樣。

下面上代碼:

1、枚舉類型:EPlatform

/*
  平臺
  @author isea533
 /
public enum EPlatform {
    Any("any"),
    Linux("Linux"),
    Mac_OS("Mac OS"),
    Mac_OS_X("Mac OS X"),
    Windows("Windows"),
    OS2("OS/2"),
    Solaris("Solaris"),
    SunOS("SunOS"),
    MPEiX("MPE/iX"),
    HP_UX("HP-UX"),
    AIX("AIX"),
    OS390("OS/390"),
    FreeBSD("FreeBSD"),
    Irix("Irix"),
    Digital_Unix("Digital Unix"),
    NetWare_411("NetWare"),
    OSF1("OSF1"),
    OpenVMS("OpenVMS"),
    Others("Others");

private EPlatform(String desc){
    this.description = desc;
}

public String toString(){
    return description;
}

private String description;

}</pre>

2、操作系統類:OSinfo

/*
  操作系統類:
  獲取System.getProperty("os.name")對應的操作系統
  @author isea533
 */
public class OSinfo {

private static String OS = System.getProperty("os.name").toLowerCase();

private static OSinfo _instance = new OSinfo();

private EPlatform platform;

private OSinfo(){}

public static boolean isLinux(){
    return OS.indexOf("linux")>=0;
}

public static boolean isMacOS(){
    return OS.indexOf("mac")>=0&&OS.indexOf("os")>0&&OS.indexOf("x")<0;
}

public static boolean isMacOSX(){
    return OS.indexOf("mac")>=0&&OS.indexOf("os")>0&&OS.indexOf("x")>0;
}

public static boolean isWindows(){
    return OS.indexOf("windows")>=0;
}

public static boolean isOS2(){
    return OS.indexOf("os/2")>=0;
}

public static boolean isSolaris(){
    return OS.indexOf("solaris")>=0;
}

public static boolean isSunOS(){
    return OS.indexOf("sunos")>=0;
}

public static boolean isMPEiX(){
    return OS.indexOf("mpe/ix")>=0;
}

public static boolean isHPUX(){
    return OS.indexOf("hp-ux")>=0;
}

public static boolean isAix(){
    return OS.indexOf("aix")>=0;
}

public static boolean isOS390(){
    return OS.indexOf("os/390")>=0;
}

public static boolean isFreeBSD(){
    return OS.indexOf("freebsd")>=0;
}

public static boolean isIrix(){
    return OS.indexOf("irix")>=0;
}

public static boolean isDigitalUnix(){
    return OS.indexOf("digital")>=0&&OS.indexOf("unix")>0;
}

public static boolean isNetWare(){
    return OS.indexOf("netware")>=0;
}

public static boolean isOSF1(){
    return OS.indexOf("osf1")>=0;
}

public static boolean isOpenVMS(){
    return OS.indexOf("openvms")>=0;
}

/**
 * 獲取操作系統名字
 * @return 操作系統名
 */
public static EPlatform getOSname(){
    if(isAix()){
        _instance.platform = EPlatform.AIX;
    }else if (isDigitalUnix()) {
        _instance.platform = EPlatform.Digital_Unix;
    }else if (isFreeBSD()) {
        _instance.platform = EPlatform.FreeBSD;
    }else if (isHPUX()) {
        _instance.platform = EPlatform.HP_UX;
    }else if (isIrix()) {
        _instance.platform = EPlatform.Irix;
    }else if (isLinux()) {
        _instance.platform = EPlatform.Linux;
    }else if (isMacOS()) {
        _instance.platform = EPlatform.Mac_OS;
    }else if (isMacOSX()) {
        _instance.platform = EPlatform.Mac_OS_X;
    }else if (isMPEiX()) {
        _instance.platform = EPlatform.MPEiX;
    }else if (isNetWare()) {
        _instance.platform = EPlatform.NetWare_411;
    }else if (isOpenVMS()) {
        _instance.platform = EPlatform.OpenVMS;
    }else if (isOS2()) {
        _instance.platform = EPlatform.OS2;
    }else if (isOS390()) {
        _instance.platform = EPlatform.OS390;
    }else if (isOSF1()) {
        _instance.platform = EPlatform.OSF1;
    }else if (isSolaris()) {
        _instance.platform = EPlatform.Solaris;
    }else if (isSunOS()) {
        _instance.platform = EPlatform.SunOS;
    }else if (isWindows()) {
        _instance.platform = EPlatform.Windows;
    }else{
        _instance.platform = EPlatform.Others;
    }
    return _instance.platform;
}
/**
 * @param args
 */
public static void main(String[] args) {
    System.out.println(OSinfo.getOSname());
}

}</pre>




如果結果錯誤,你可以使用下面的代碼獲取你的操作系統信息:

class WhatOS 
{
  public static void main( String args[] ) 
  {
    System.out.println( System.getProperty("os.name") );//這個方法可以直接輸出操作系統名稱。
    System.out.println( System.getProperty("os.version") );
    System.out.println( System.getProperty("os.arch") );
  }
}

原帖 :http://blog.csdn.net/isea533/article/details/8449919

 本文由用戶 ngmm 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!