Как заставить стандартный вывод для процесса C #, когда UseShellExecute == false? - PullRequest
0 голосов
/ 27 апреля 2018

Я запускаю процессы из C #, используя следующий код;

private static void ExecuteShellCMD(string workingDir, string commandWithArgs, bool bWait = true)
{
    ProcessStartInfo info = new ProcessStartInfo();
    info.Verb = "runas";
    info.FileName = "cmd.exe";
    info.WorkingDirectory = workingDir;
    info.Arguments = "/C " + commandWithArgs;
    info.UseShellExecute = false;
    using (Process myProcess = Process.Start(info))
    {
        if (bWait)
        {
            myProcess.WaitForExit();
        }

        int ExitCode = myProcess.ExitCode;

        //Log exit code here.
    }
}

Он загружает командное окно с повышенными правами и выполняет код / ​​файл bat, который я передаю, но без что-либо записывает на консоль. Похоже, что это не согласуется на других машинах, и раньше это работало на моей машине, и я подумал, есть ли у кого-нибудь идеи о том, как я могу последовательно сделать этот Процесс, просто печатая логи в командном окне, которое создает процесс.

Я вижу журналы, если я установил UseShellExecute = true, но затем не могу использовать Verb без принятия запроса на повышение прав, что нежелательно.

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

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

1 Ответ

0 голосов
/ 06 августа 2018

Оказывается, это была ошибка в Unity Hub. Процесс и вывод работали нормально, однако при запуске из экземпляра Unity, запущенного из Unity Hub, он контролировал вывод и не выпускал его. Это было решено простым запуском Unity и отчет об ошибке в Unity Hub.

...