如何检测x64 Windows上是否安装了32位Java,只查看文件系统和注册表?
我需要确定特定系统是否安装了32位Java。 我正在进行远程查询,只允许我访问文件系统和注册表,因此我无法尝试运行java.exe或运行任何Java代码。
我还想确保我检测到IBM和Sun Java以及任何其他发行版,这些发行版似乎将文件放在文件系统和注册表中的不同位置。
我提出的最好的方法是检查C:\ Windows \ SysWOW64 \ java.exe。 这是测试32位Java存在的可靠方法,还是某些版本不会将java.exe放在该文件夹中?
更新:我仍然在寻找更加健全的答案。 为了清楚起见,我无法访问命令提示符。 此外,无论发布者是谁,安装了什么版本号,以及用户选择安装它的路径,我都想检测Java。
C:\ Windows \ SysWOW64 \ java.exe似乎符合这些要求,但我希望得到一些知识渊博的人的确认,即每个Java安装程序确实会将该可执行文件放在那里。
这似乎提供了Windows上的信息:
1.)打开Windows命令提示符。
2.)键入: java -XshowSettings:all并按Enter。
3.)命令窗口中将显示许多信息。 向上滚动,直到找到字符串: sun.arch.data.model 。
4.)如果它说sun.arch.data.model = 32 ,那么你的VM是32位。 如果它说sun.arch.data.model = 64 ,那么你的VM是64位。
你有权访问命令提示符吗?
方法1:命令提示符
可以通过执行以下命令java -version来确定系统上安装的Java的细节
方法2:文件夹结构
如果您无权访问命令提示符,则确定Java所在的文件夹。
32位: C:\Program Files (x86)\Java\jdk1.6.0_30
64位: C:\Program Files\Java\jdk1.6.0_25
但是,在安装过程中,用户可能会更改安装文件夹。
方法3:注册表
您还可以在注册表编辑器中看到安装的版本。
-
转到注册表编辑器
-
编辑 – >查找
-
搜索Java。 您将获得Java的注册表项。
-
在名称为
DisplayName
和DisplayVersion
的条目中,将显示已安装的Java版本
检查此键是否为32位和64位Windows机器。
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
这适用于具有32位JRE的Windows 64位。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment
这适用于oracle-sun JRE。
如果它不是Oracle的Java,您可能无法分辨。 当我安装Oracle Java 64位时,文件进入C:\ Program Files \ Java,但是当我安装32位版本时,它们默认为C:\ Program Files(x86)\ Java。 当然,安装Java的人可以覆盖这些默认值。
我在Windows上尝试了Oracle和IBM Java的32位和64位安装程序,并且C:\ Windows \ SysWOW64 \ java.exe的存在似乎是确定32位Java可用的可靠方法。 我没有测试过这些安装程序的旧版本,但至少看起来它应该是一种可靠的测试方法,适用于最新版本的Java。