Мне нужно запустить эту команду из cd.bat
powershell -windowstyle hidden -command "Start-Process cmd -ArgumentList '/c takeown /f \"C:\Windows\System32\wuaueng.dll\" && icacls \"C:\Windows\System32\wuaueng.dll\" /grant *S-1-3-4:F /t /c /l' -Verb runAs"
Когда я запускаю эту BAT вручную, щелкнув правой кнопкой мыши -> Запуск от имени администратора, она отлично работает, когда я пытаюсь запустить из CMD:
Process.Start(Application.StartupPath + "\\cd.bat");
CMD Запускается, но команда не работает, почему?
Мое приложение имеет административное разрешение в манифесте
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Я также пытался использовать обычную команду:
proc.StartInfo.FileName = "CMD.exe";
proc.StartInfo.Arguments = "/c powershell -windowstyle hidden -command \"Start - Process cmd - ArgumentList '/c takeown /f \"C:\\Windows\\System32\\wuaueng.dll\" && icacls \"C:\\Windows\\System32\\wuaueng.dll\" /grant *S-1-3-4:F /t /c /l' - Verb runAs\"";
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
и
var p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = @"C:\Windows\System32";
p.StartInfo.Arguments = "/k powershell -windowstyle hidden -command \"Start - Process cmd - ArgumentList '/c takeown /f \"C:\\Windows\\System32\\wuaueng.dll\" && icacls \"C:\\Windows\\System32\\wuaueng.dll\" /grant *S-1-3-4:F /t /c /l' - Verb runAs\"";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = false;
p.StartInfo.UseShellExecute = false;
p.OutputDataReceived += (a, b) => line = line + b.Data + Environment.NewLine;
p.ErrorDataReceived += (a, b) => line = line + b.Data + Environment.NewLine;
p.Start();
p.BeginErrorReadLine();
p.BeginOutputReadLine();
MessageBox.Show(line);
MessageBox result Пусто, поэтому ошибок нет ...
Тот же результат = (