Попытка загрузить стороннее приложение в режиме администратора с помощью процесса C # и прочитать его вывод. Однако, когда я пытаюсь использовать RedirectStandardOutput для процесса, он падает через несколько секунд после запуска на ПК с Windows 7. Я могу заставить его нормально работать в Windows 10, но нам также нужно, чтобы он работал и в Windows 7. Мне бы хотелось, чтобы процесс мог нормально работать, и чтобы я считывал его вывод в программа без сбоев, когда C # пытается загрузить его.
Я выделил процесс только для сбоя, когда я перенаправляю стандартный вывод или стандартную ошибку. Установка UseShellExecute в false, похоже, не влияет на это. Командная строка аналогичным образом закрывается, когда я пытаюсь загрузить ее таким образом, так что она не кажется странной для программы.
Я также пытался обойти это, используя FileSystemWatcher и читая логи, что программа может быть настроена на вывод этих данных, и я прочитал их, но когда я попробовал это, вывод, казалось, не сбрасывался на файл с достаточно хорошей скоростью.
Добавление глагола "runas" в startInfo, похоже, также не влияет на него, поскольку этот процесс уже требует запуска приложения в режиме администратора.
Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = filename;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
p.StartInfo = startInfo;
if(case1){
p.StartInfo.Arguments = args;
p.Start();
}
Ожидаемый результат, который происходит в моей исходной среде разработки для Windows 10, заключается в том, что процесс запустится
Фактический результат в Windows 7 заключается в том, что программа зависает при запуске, и появляется окно «Это приложение не отвечает».
EventViewer, похоже, считает, что проблема в msvcr120.dll, но тот факт, что это произошло на 3 отдельных компьютерах с Windows 7, указывает на то, что это, вероятно, что-то еще.