var newProcessInfo = new System.Diagnostics.ProcessStartInfo();
newProcessInfo.FileName = @"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe";
newProcessInfo.Verb = "runas";
newProcessInfo.Arguments = @"-executionpolicy unrestricted -Command ""C:\Windows\system32\sfc.exe /scannow""";
/*
newProcessInfo.Arguments = @"-Command ""sfc /scannow""";
newProcessInfo.Arguments = @"-File ""C:\my\script.ps1""";
newProcessInfo.Arguments = @"–ExecutionPolicy Bypass -File ""C:\my\script.ps1"""; */
这些基本上是我想要使用的基本样式代码命令。我一直有问题 - 执行政策不受限制。如上所述,当我在powershell中输入它时效果很好。
另外,在PowerShell到cmd.exe / k的可比编码是什么,所以命令提示符窗口保持打开以进行故障排除?
答案 0 :(得分:1)
在看到您的错误后,我可以肯定地说,您正在运行的sfc
命令发生了该错误。该命令正在执行。
执行策略是关于如何处理脚本文件的,因此它对立即运行的命令没有影响(除非您在命令中引用脚本文件)。我担心这对你的特定问题没有帮助。
是什么让您认为您的执行政策无效?
由于您未在未注释的代码中使用-File
参数,因此执行策略应无关紧要。
cmd.exe /k
的类似powershell命令是powershell.exe -NoExit
。
答案 1 :(得分:0)
Answer found on Stackoverflow(click here)
...
using System.Diagnostics;
...
private void button4_Click(object sender, EventArgs e)
{
string docs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string snat = Environment.GetEnvironmentVariable("windir") + @"\sysnative\sfc.exe";
Process a = new Process();
a.StartInfo.FileName = snat;
a.StartInfo.Arguments = "/SCANNOW";
a.StartInfo.UseShellExecute = false;
a.StartInfo.RedirectStandardOutput = true;
a.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
a.StartInfo.CreateNoWindow = true;
a.Start();
string output = a.StandardOutput.ReadToEnd();
a.WaitForExit();
MessageBox.Show("DONE!");
}
catch
{
MessageBox.Show("error!");
}