Выполнить команду windows 10 IOT cmd из кода c # - PullRequest
0 голосов
/ 26 июня 2019

Windows10 IOT enterprise имеет функцию защиты доступа к записи на дисках.Эта функция известна как UWF "Унифицированный фильтр записи".Я включаю эту функцию и защищаю доступ для записи на диске C.Теперь я ищу функциональность, чтобы отключить его через мой код C #.Командой Cmd для его отключения является «отключение фильтра uwfmgr».Я реализовал код (ниже) для выполнения этой команды, но он не работает

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new   System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C uwfmgr filter disable";
startInfo.UserName = "Administrator";
startInfo.Password  =  class1.ConvertToSecureString("SRPedm");
process.StartInfo = startInfo;
process.Start();
Process.Start("shutdown","/r /t 0");

Код выполняется без каких-либо ошибок, но команда не выполняется.

1 Ответ

1 голос
/ 26 июня 2019

Вы не ожидаете завершения процесса и не ищете никаких ошибок.

Вам нужно позвонить process.WaitForExit и взглянуть на process.StandardError

public static void Main()
{
   var p = new Process();  
   p.StartInfo.UseShellExecute = false;  
   p.StartInfo.RedirectStandardError = true;  
   p.StartInfo.FileName = "Write500Lines.exe";  
   p.Start();  

   // To avoid deadlocks, always read the output stream first and then wait.  
   string output = p.StandardError.ReadToEnd();  
   p.WaitForExit();

   Console.WriteLine($"\nError stream: {output}");
}

См. Эту страницу для примера https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.standarderror?view=netframework-4.8#System_Diagnostics_Process_StandardError

...