所以我为我的应用程序创build了Java Access Bridge的安装程序,并且需要findJava安装目录。 我正在使用这段代码工作..
public static string GetJavaInstallationPath() { try { string environmentPath = Environment.GetEnvironmentVariable("JAVA_HOME"); if (!string.IsNullOrEmpty(environmentPath)) { return environmentPath; } string javaKey = "SOFTWARE\\JavaSoft\\Java Runtime Environment\\"; using (Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(javaKey)) { string currentVersion = rk.GetValue("CurrentVersion").ToString(); using (Microsoft.Win32.RegistryKey key = rk.OpenSubKey(currentVersion)) { return key.GetValue("JavaHome").ToString(); } } } catch (Exception e) { Console.WriteLine(e.StackTrace); return null; } }
直到..我在我的虚拟机上运行一个干净的Windows 7 64位安装,并从java.com安装Java。 它默认安装了32位版本的Java,但是我真的认为这并不重要,因为32位也需要JAVA_HOMEvariables或registry项。 那么,情况并非如此! 没有registry项,PATHvariables中没有条目,也没有JAVA_HOMEvariables。 所以这个代码不会工作! 我的问题是,即使它是安装的32位Java版本,我如何检测Java安装目录。 没有什么我知道的,我可以使用..
您忘记了32位应用程序的注册表路径不同。 看到这篇MS文章: http : //msdn.microsoft.com/en-us/library/windows/desktop/ms724072%28v=vs.85%29.aspx