最近一段时间写一个授权的程序,需要获取很多信息来保证程序不能随意复制使用,必须经过授权才可以。
为了限制用户使用的操作系统,必须有统一的方法来获取才可以。
在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;
- }
/** * 平台 * @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; }
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());
- }
- }
/** * 操作系统类: * 获取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()); } }
我使用的Windows 7 识别出来:Windows ,如果大家使用别的操作系统,希望能把操作系统和结果在这里留言写下来。
如果结果错误,你可以使用下面的代码获取你的操作系统信息:
- 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") );
- }
- }