当我通过命令行使用:
检查安装的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键包含以下子项:
答案 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);