3

因此,我正在为我的应用程序创建 Java Access Bridge 安装程序,并且需要找到 Java 安装目录。我正在使用这段有效的代码..

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_HOME 变量或注册表项。好吧,事实并非如此!没有注册表项,PATH 变量中没有条目,也没有 JAVA_HOME 变量。所以这段代码行不通!我的问题是,即使安装的是 32 位 Java 版本,我如何检测 java 安装目录。没有什么我知道我可以使用..

4

1 回答 1

4

您忘记了 32 位应用程序的注册表路径不同。请参阅这篇 MS 文章:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms724072%28v=vs.85%29.aspx

于 2013-05-24T20:58:44.373 回答