Нам нужно запустить процесс с требуемыми правами администратора (определенными в его app.manifest) в обычном процессе и прочитать его вывод. Как я вижу это, чтобы начать процесс с более высоким правом, нам нужно установить UseShellExecute = true
. Но это мешает нам получать стандартный вывод.
Вот мой фрагмент кода, но она нуждается в текущем процессе, чтобы иметь привилегии администратора тоже (что мы не можем себе позволить, так это огромное приложение, и это единственный раздел, который нуждается в высоте):Запустить процесс с более высокими привилегиями и прочитать его вывод
if (bAdmin)
{
Process p = new Process
{
StartInfo =
{
Arguments = "-GetRestorePoints",
FileName = Environment.CurrentDirectory + @"\Hamekare.AdminSettings.exe",
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
RedirectStandardOutput = true,
UseShellExecute = false
}
};
p.OutputDataReceived += p_OutputDataReceived;
p.Start();
p.BeginOutputReadLine();
}