【问题标题】:JRE Version QueryJRE版本查询
【发布时间】:2013-11-23 18:38:33
【问题描述】:

当我通过命令行检查安装的 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 开发工具包
  2. Java 插件
  3. Java 运行时环境
  4. Java 更新
  5. Java 网络启动
  6. 首选项

【问题讨论】:

  • JavaSoft 下是否安装了其他子项?您能否提供 java -version 的完整输出?

标签: c# java .net


【解决方案1】:

您可能遇到了注册表重定向: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 方法并指定 RegistryView 参数来指定是要使用 64 位还是 32 位:

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

【讨论】:

  • 谢谢!真的很有帮助。
猜你喜欢
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多