我希望在捕获输出时运行具有提升权限的命令:
using System.Diagnostics;
namespace SO
{
class Program
{
static void Main(string[] args)
{
ProcessStartInfo startInfo = new ProcessStartInfo("FSUTIL", "dirty query c:");
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.Verb = "runas";
var proc = new Process();
proc.StartInfo = startInfo;
proc.Start();
proc.WaitForExit();
string output = proc.StandardOutput.ReadToEnd();
System.Console.WriteLine(output);
}
}
}
问题在于startInfo.Verb = "runas";
需要startInfo.UseShellExecute = true;
,这与RedirectStandardOutpu
不兼容。
任何可能的解决方案?
答案 0 :(得分:0)
这不是您的请求的准确答案,但会向您显示您的方法中的一些问题以及避免所有问题的方法。
如果你的程序没有以提升的方式运行,那么每次调用外部程序时它都会向用户请求提升权限,因此在某些时候会要求用户将权限提升到程序。
这样说,您可以使用提升的权限运行程序,这样当您启动外部程序时,它将继承提升的权限。
执行程序以在运行读取this post.
时请求提升权限