一尘不染

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

java

我正在开发一个软件应用程序,该程序可以检查您所安装的软件类型,但是要这样做,我必须知道该操作系统是32位还是64位操作系统。

我尝试了System.getProperty(“ os.arch”); 但是后来我读到,该命令仅向我们显示了JDK /
JRE的位,而不是OS本身。如果您能告诉我如何知道所使用的操作系统(Windows 7,Mac OS,Ubuntu等),那简直太棒了。


阅读 288

收藏
2020-09-08

共1个答案

一尘不染

System.getProperty(“os.arch”);

应该在所有平台上都可用,请参阅Java
系统属性教程以获取更多信息。

但是
,如果是32位JVM,则64位Windows平台将依赖JVM。实际上,64位Windows可以对环境进行任何32位处理,以帮助旧的32位程序在64位OS上正常工作。阅读有关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";
2020-09-08