如何使用Java检查操作系统的位数?(J2SE,而不是os.arch)

Raú*_*vas 25 java operating-system

我正在开发一个软件应用程序来检查你安装了哪种软件,但为了做到这一点,我必须知道操作系统是32位还是64位操作系统.我试过System.getProperty("os.arch"); 但后来我读到这个命令只向我们展示了JDK/JRE的位,而不是操作系统本身.如果你能告诉我如何知道操作系统的使用(Windows 7,Mac OS,Ubuntu等等),那将简直太棒了C:

Chr*_*isH 46

System.getProperty("os.arch");
Run Code Online (Sandbox Code Playgroud)

应该可以在所有平台上使用,有关详细信息,请参阅Java 系统属性教程.

但是如果它是32位JVM,64位Windows平台将存在于JVM中.实际上64位Windows将涉及任何关于环境的32位进程,以帮助旧的32位程序在64位操作系统上正常工作.有关更多信息,请阅读有关WOW64MSDN文章.

作为WOW64的结果,32位JVM调用System.getProperty("os.arch")将返回"x86".如果要在Windows上获取底层操作系统的真实体系结构,请使用以下逻辑:

String arch = System.getenv("PROCESSOR_ARCHITECTURE");
String wow64Arch = System.getenv("PROCESSOR_ARCHITEW6432");

String realArch = arch != null && arch.endsWith("64")
                  || wow64Arch != null && wow64Arch.endsWith("64")
                      ? "64" : "32";
Run Code Online (Sandbox Code Playgroud)

也可以看看:

HOWTO:检测过程位数

为什么%processor_architecture%总是返回x86而不是AMD64

检测当前Windows版本是32位还是64位