c#如何确定Windows Java安装位置
我正在尝试动态运行一个。来自C#程序集的jar(使用Process.Start(info)
)。现在,我可以通过控制台应用程序运行:
ProcessStartInfo info = new ProcessStartInfo("java", "-jar somerandom.jar");
然而,在一个程序集中,我不断得到Win32Exception
的“系统找不到指定的文件”,并且必须将行更改为Java的完整路径,如下所示:
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\u 20”)
找到最新java的最可靠的“长期”解决方案是什么。C#应用程序的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();
}
}
共 (0) 个答案