C#:run命令,具有提升的权限和捕获输出

时间:2017-01-26 22:29:10

标签: c# process elevated-privileges elevation privilege-elevation

我希望在捕获输出时运行具有提升权限的命令:

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不兼容。

任何可能的解决方案?

1 个答案:

答案 0 :(得分:0)

这不是您的请求的准确答案,但会向您显示您的方法中的一些问题以及避免所有问题的方法。

如果你的程序没有以提升的方式运行,那么每次调用外部程序时它都会向用户请求提升权限,因此在某些时候会要求用户将权限提升到程序。

这样说,您可以使用提升的权限运行程序,这样当您启动外部程序时,它将继承提升的权限。

执行程序以在运行读取this post.

时请求提升权限