1

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

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的。

任何可能的解决方案?

4

1 回答 1

0

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

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

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

要让您的程序在运行时请求提升权限,请阅读这篇文章。

于 2017-01-26T22:36:05.097 回答