所以我正在为我的应用程序创建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安装目录。我不知道我能用什么......
答案 0 :(得分:4)
您忘记了32位应用程序的注册表路径不同。请参阅此MS文章:http://msdn.microsoft.com/en-us/library/windows/desktop/ms724072%28v=vs.85%29.aspx