Windows 10 в командной строке программно выводит мусор для некоторых команд
У меня есть устаревшая программа winForms (работает на Windows 7 Embedded), которую мы пытаемся запустить на Windows 10. У нас есть простой процесс, в котором мы запускаем процесс командной строки cmd.exe и выполняем различные задачи. Одна задача - взаимодействовать с фильтром записи. WES7 использует ewfmgr, а windows 10 использует инструменты командной строки uwfmgr.
Чтобы интерпретировать результат, мы читаем вывод и принимаем решения на основе вывода.
Проблема в Windows 10, вывод не читается. Это только для
Пример простого кода:
private Process statusProcess = new Process();
private List<string> cmdOutput = new List<string>();
ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
cmdStartInfo.FileName = @"C:\Windows\System32\cmd.exe";
cmdStartInfo.WorkingDirectory = @"C:\Dev";
cmdStartInfo.CreateNoWindow = true;
cmdStartInfo.UseShellExecute = false;
//Add Admin account details
cmdStartInfo.Domain = "Bla";
cmdStartInfo.UserName = "Admin";
cmdStartInfo.Password = securePwd;
cmdStartInfo.RedirectStandardOutput = true;
cmdStartInfo.RedirectStandardError = true;
cmdStartInfo.RedirectStandardInput = true;
statusProcess.StartInfo = cmdStartInfo;
statusProcess.ErrorDataReceived += cmd_Error;
statusProcess.OutputDataReceived += cmd_DataReceived;
statusProcess.EnableRaisingEvents = true;
statusProcess.Start();
statusProcess.BeginOutputReadLine();
statusProcess.BeginErrorReadLine();
//cmd_DataReceived Simple just add data
private void cmd_DataReceived(object sender, DataReceivedEventArgs e)
{
cmdOutput.Add(e.Data);
}
Отправить команды с помощью
statusProcess.StandardInput.WriteLine("dir");
Если мы запускаем такие команды, как dir, мы получаем отличные результаты.
если мы запустим uwfmgr Get-Config
Хотя эта команда отображает конфигурацию, команды set не работают, так что это не только проблема вывода, либо это?
Поток ошибок пуст, и я предполагаю, что поток ошибок работает, поскольку я могу получить ошибки по другим командам.
Кодовая страница установлена на 437, и другие команды работают как положено, обратите внимание, что первая строка верна и имеет смысл.
Я пробовал разные подходы
Я написал сценарий powershell и могу правильно вызвать его, но не могу пройти UAC (я думаю, что UAC, но мне отказано в доступе) в потоке ошибок, а также не уверен, как получить вывод из powershell
Считается, что с помощью классов powershell из System.Management.Automation это может работать на W10, но возникают проблемы с WES7.
Мне интересно, почему вывод на дисплей так?
Я только что написал этот пост, и мне интересно, если меня не смущает безопасность, я собираюсь исследовать этот аспект.
Заранее спасибо, если у кого-то были какие-то указатели.