Skip to content

Commit

Permalink
Check for both the 32- and 64-bit versions of Java (fixes #2)
Browse files Browse the repository at this point in the history
  • Loading branch information
sharwell committed Mar 12, 2013
1 parent c9d8fce commit f494410
Showing 1 changed file with 37 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,44 @@ private string JavaHome
{
get
{
string javaKey = "SOFTWARE\\JavaSoft\\Java Runtime Environment";
using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default).OpenSubKey(javaKey))
string javaHome;
if (TryGetJavaHome(RegistryView.Default, out javaHome))
return javaHome;

if (TryGetJavaHome(RegistryView.Registry64, out javaHome))
return javaHome;

if (TryGetJavaHome(RegistryView.Registry32, out javaHome))
return javaHome;

throw new NotSupportedException("Could not locate a Java installation.");
}
}

private bool TryGetJavaHome(RegistryView registryView, out string javaHome)
{
javaHome = null;

string javaKeyName = "SOFTWARE\\JavaSoft\\Java Runtime Environment";
using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default))
{
using (RegistryKey javaKey = baseKey.OpenSubKey(javaKeyName))
{
string currentVersion = baseKey.GetValue("CurrentVersion").ToString();
using (var homeKey = baseKey.OpenSubKey(currentVersion))
return homeKey.GetValue("JavaHome").ToString();
if (javaKey == null)
return false;

object currentVersion = javaKey.GetValue("CurrentVersion");
if (currentVersion == null)
return false;

using (var homeKey = javaKey.OpenSubKey(currentVersion.ToString()))
{
if (homeKey == null || homeKey.GetValue("JavaHome") == null)
return false;

javaHome = homeKey.GetValue("JavaHome").ToString();
return !string.IsNullOrEmpty(javaHome);
}
}
}
}
Expand Down

0 comments on commit f494410

Please sign in to comment.