有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c#想检查是否安装了Java,如果安装了,是哪个版本

我想在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的计算机。否则,您将得到一个系统。NullReferenceException

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

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


共 (1) 个答案

  1. # 1 楼答案

    我认为有两种方法可以做到这一点——一种是上面的方法,另一种是按照Luiggi的建议,从C#程序执行cmd命令

    我认为您最好像现在这样查询注册表,但要么使用try-catch块,要么检查null,并以某种方式处理失败

    然而,如果我弄错了,并且有一些常见的方法用户可以在没有注册表项的情况下使用Java,我会选择System。诊断学。过程系统。诊断学。ProcessStartInfo对象可用于构造流程的所有选项,并在流程启动前传递给流程

    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());
    }