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
,
Любые возможные решения?
1 ответ
Это не точный ответ на ваш запрос, но покажет вам некоторые проблемы в вашем подходе и способ избежать всех.
Если ваша программа не работает с повышенными правами, каждый раз, когда вы вызываете внешнюю программу, она будет запрашивать повышенные привилегии для пользователя, поэтому в какой-то момент у пользователя будет запрошено повышение привилегий для программы.
Таким образом, вы можете запускать вашу программу с повышенными привилегиями, таким образом, когда вы запускаете внешнюю программу, она наследует повышенные привилегии.
Чтобы ваша программа запрашивала повышенные привилегии при запуске, прочитайте этот пост.