JRE版本查询

时间:2013-11-23 18:38:34

标签: c# java .net

当我通过命令行使用:

检查安装的JRE版本时
java -version

或通过密钥中的注册表:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment and the value CurrentVersion

我得到1.7。

但是,当我使用C#查询注册表值时如下:

string jreVersion = (string) Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment", "CurrentVersion", null);

它读取1.5。

有人可以帮忙吗?

P.S:我正在使用Windows Server 2008 R2和.NET 4.0,并正确安装了JRE 1.7。

P.S:java -version读取:

java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

JavaSoft键包含以下子项:

  1. Java Development Kit
  2. Java Plug-in
  3. Java运行时环境
  4. Java Update
  5. Java Web Start
  6. 偏好设置

1 个答案:

答案 0 :(得分:0)

您可能正在进行注册表重定向:http://msdn.microsoft.com/en-us/library/windows/desktop/aa384232(v=vs.85).aspx

在您的计算机上,手动检查以下注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment

我打赌它的价值是1.5。

在C#中,您可以打开注册表并指定是否要使用OpenBaseKey方法使用64位或32位并指定RegistryView参数:

RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);