C#:使用提升的权限运行命令并捕获输出



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

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

有什么可能的解决方案吗?

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

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

也就是说,您可以使用提升的权限

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

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

相关内容

  • 没有找到相关文章

最新更新