Вызов процесса C #, взаимодействие со стандартным вводом и стандартным выводом

У меня есть кнопка, которую я нажимаю, которая выполняет команду. Команда может запросить какой-то стандартный ввод, и мне нужно ответить на этот ввод, проблема в том, как программа запускается изо дня в день, поэтому мне нужно интерпретировать стандартный вывод и соответственно перенаправить стандартный ввод.

У меня есть этот простой кусок кода, который читает строку стандартного вывода построчно, и когда он видит запрос пароля, он отправляет стандартный ввод, однако программа просто зависает, так как никогда не видит запрос пароля, но когда я запускаю В командном файле есть запрос пароля.

Вот командный файл, который я вызываю для выполнения этого теста:

@echo off
echo This is a test of a prompt
echo At the prompt, Enter a response
set /P p1=Enter the Password: 
echo you entered "%p1%"

Вот вывод этого командного файла при запуске из командной строки:

C:\Projects\SPP\MOSSTester\SPPTester\bin\Debug>test4.bat
This is a test of a prompt
At the prompt, Enter a response
Enter the Password: Test1
you entered "Test1"

Вот фрагмент кода C #, который я использую для вызова зависшего пакетного файла:

    var proc = new Process();
    proc.StartInfo.FileName = "cmd.exe";
    proc.StartInfo.Arguments = "/c test4.bat";
    proc.StartInfo.RedirectStandardOutput = true;
    proc.StartInfo.RedirectStandardError = true;
    proc.StartInfo.RedirectStandardInput = true;
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.CreateNoWindow = true;
    proc.Start();
    //read the standard output and look for prompt for password
    StreamReader sr = proc.StandardOutput;
    while (!sr.EndOfStream)
    {
        string line = sr.ReadLine();
        Debug.WriteLine(line);
        if (line.Contains("Password"))
        {
            Debug.WriteLine("Password Prompt Found, Entering Password");
            proc.StandardInput.WriteLine("thepassword");
        }
    }
    sr.Close();
    proc.WaitForExit();

Вот стандартный вывод отладки, который я вижу, обратите внимание, что я никогда не вижу подсказку для пароля, почему это? это просто висит?

This is a test of a prompt
At the prompt, Enter a response

Есть ли способ, которым я могу посмотреть стандартный вывод для запроса и реагировать на него соответственно?

Ответы на вопрос(2)

Ваш ответ на вопрос