想要检查是否安装了Java,如果安装了,那么是哪个版本

时间:2014-10-31 16:32:21

标签: java c#

我想检查C#是否安装了JRE,其次是哪个版本以及它是否符合我的应用程序所需的版本。

我目前正在使用以下代码:

RegistryKey rk = Registry.LocalMachine;
RegistryKey subKey = rk.OpenSubKey("SOFTWARE\\JavaSoft\\Java Runtime Environment");
string currentVersion = subKey.GetValue("CurrentVersion").ToString();
string neededVersion = "1.7";
if (currentVersion == neededVersion)
{
           //do something
}
else
{
           //do something else
}

但这只适用于带有Java的计算机的注册表。否则,您将收到System.NullReferenceException。

我不知道我应该怎么做,有人能帮助我吗?

这有点困难,因为我想在一个脚本中使用前面提到的两件事。

1 个答案:

答案 0 :(得分:0)

我认为有两种方法可以做到这一点 - 一种是你上面这样做的方式,另一种方式就像Luiggi建议的那样,就是从你的C#程序执行一个cmd命令。

我认为你最好只是像你一样查询注册表,但要么使用try-catch块,要么检查null,并以某种方式处理失败。

但是,如果我弄错了,并且用户可以在没有注册表项的情况下使用Java,我会使用System.Diagnostics.Process。 System.Diagnostics.ProcessStartInfo对象可用于构造进程的所有选项,并在启动之前传递给Process。

try
{   
     ProcessStartInfo procStartInfo = new ProcessStartInfo(yourFilePath, yourArgument);
     procStartInfo.RedirectStandardOutput = true;
     procStartInfo.RedirectStandardError = true;
     procStartInfo.UseShellExecute = false;

     Process proc = new Process();
     proc.StartInfo = procStartInfo;
     proc.Start();
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}
相关问题