C#:使用提升的权限运行命令并捕获输出
我希望在捕获输出时使用提升的权限运行命令:C#:使用提升的权限运行命令并捕获输出,c#,process,elevated-privileges,elevation,privilege-elevation,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:"); startInf
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
,它不兼容重定向StandardOutpu
有什么可能的解决方案吗?这不是对您要求的确切回答,但会向您展示一些方法上的问题以及避免所有问题的方法
如果您的程序不是以提升的方式运行,那么每次调用外部程序时,它都会向用户请求提升的权限,因此在某个时候会请求用户将权限提升到某个程序
也就是说,您可以使用提升的权限运行您的程序,这样,当您启动外部程序时,它将继承提升的权限
要让您的程序在运行时请求提升的权限,请阅读,这并不是对您的请求的确切回答,但会向您显示一些方法上的问题以及避免所有问题的方法
如果您的程序不是以提升的方式运行,那么每次调用外部程序时,它都会向用户请求提升的权限,因此在某个时候会请求用户将权限提升到某个程序
也就是说,您可以使用提升的权限运行您的程序,这样,当您启动外部程序时,它将继承提升的权限
要使您的程序在运行时请求提升权限,请在我设置时读取,应用程序将在单独的控制台中打开。所以我还是抓不到stdout。我想从提升的控制台窃取输出,并将其复制到原始控制台中的。删除“runas”动词并确保将UseShellExecute设置为false。这样做没有任何效果。我认为在不同的控制台中打开提升的控制台应用程序是正常的。关键是在新的提升控制台中捕获输出,并在原来的控制台上发送。当我设置时,应用程序在单独的控制台中打开。所以我还是抓不到stdout。我想从提升的控制台窃取输出,并将其复制到原始控制台中的。删除“runas”动词并确保将UseShellExecute设置为false。这样做没有任何效果。我认为在不同的控制台中打开提升的控制台应用程序是正常的。关键是在新的提升控制台中捕获输出,并在原始控制台上发送。