如何检测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:注册表

您还可以在注册表编辑器中看到安装的版本。

  1. 转到注册表编辑器

  2. 编辑 – >查找

  3. 搜索Java。 您将获得Java的注册表项。

  4. 在名称为DisplayNameDisplayVersion的条目中,将显示已安装的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。