2013-11-23 95 views
0

当我检查或者通过使用命令行安装JRE版本: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。

PS:Java的版本上写着:

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 Web Start的
  6. 偏好设置
+0

是否有JavaSoft的下安装任何其他子项?你能否提供java -version的完整输出? – mttdbrd

回答

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方法并指定RegistryView参数使用64位或32位注明:

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

谢谢!它确实有帮助。 – hiddenUser