如何确定 Windows Java 安装位置
我正在尝试从 C# 程序集动态运行.jar(使用 )。现在,从控制台应用程序,我只能运行:Process.Start(info)
ProcessStartInfo info = new ProcessStartInfo("java", "-jar somerandom.jar");
但是,在程序集中,我不断收到“系统找不到指定的文件”,并且必须将行更改为Java的完整路径,如下所示:Win32Exception
ProcessStartInfo info = new ProcessStartInfo("C:\\Program Files\\Java\\jre6\\bin\\java.exe", "-jar somerandom.jar");
这显然不行。我需要一种方法来动态(但以声明方式)确定Java的安装位置。
我开始考虑查看注册表,但是当我到达那里时,我注意到版本有特定的键,甚至不能保证它们是数字(例如“HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6”和“HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_20”)。
从 C# 应用程序查找最新的 java.exe路径的最可靠的“长距离”解决方案是什么?
提前致谢。
- 编辑 -
多亏了GenericTypeTea和Stephen Cleary的答案,我通过以下方式解决了这个问题:
private String GetJavaInstallationPath()
{
String javaKey = "SOFTWARE\\JavaSoft\\Java Runtime Environment";
using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(javaKey))
{
String currentVersion = baseKey.GetValue("CurrentVersion").ToString();
using (var homeKey = baseKey.OpenSubKey(currentVersion))
return homeKey.GetValue("JavaHome").ToString();
}
}