Хорошо, это не дубликат " Альтернатива Process.Start () ", потому что мой вопрос здесь совсем другой.
Мне нужно запустить процесс и дождаться его выполнения и получить вывод консоли.
Существует способ установить для RedirectStandardOutput и RedirectStandardError значение true, однако на некоторых машинах это работает некорректно (где не установлен .NET SDK), установлена только среда выполнения .NET, теперь она работает на некоторых машинах и не работает на некоторых машинах, поэтому мы не знаем, в чем проблема.
У меня следующий код,
ProcessStartInfo info = new ProcessStartInfo("myapp.exe", cmd);
info.CreateNoWindow = true;
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardOutput = true;
Process p = Process.Start(info);
p.WaitForExit();
Trace.WriteLine(p.StandardOutput.ReadToEnd());
Trace.WriteLine(p.StandardError.ReadToEnd());
На некоторых машинах это будет зависать навсегда на p.WaitForExit (), а на некоторых машинах он работает правильно, поведение настолько случайное и никакой подсказки.
Теперь, если я смогу найти действительно хороший обходной путь для этого с помощью pinvoke, я буду очень счастлив.
myapp.exe - это не что иное, как написание 10 приветственных утверждений на экране.