Глагол = "runas" не работает как повышенный - PullRequest
0 голосов
/ 22 мая 2018

Как обсуждалось в другом посте, я узнал, что Verb = "runas" работает с повышенными правами.

Мне нужно запустить аргументы "logman.exe" с привилегированным повышенным уровнем.С кодом ниже я не получаю никаких выходных данных,

try
        {
            var process = new Process()
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "logman.exe",
                    Arguments = "PerfCounterCustom",
                    Verb = "runas",
                    RedirectStandardOutput = true,
                    CreateNoWindow = true,
                }
            };

            process.Start();

            string lineData;
            while ((lineData = process.StandardOutput.ReadLine()) != null)
            {
                if (lineData.Contains("Root Path:"))
                {
                    Console.WriteLine(lineData.Trim());
                }
            }

            process.WaitForExit();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

Примечание. Когда я работаю над EXE, щелкните правой кнопкой мыши как «Администратор», я получаю выходные данные.

Какие изменения необходимы, чтобычто я могу сделать Elevated через код в C # и вывод?

1 Ответ

0 голосов
/ 20 октября 2018

Process.Start () может использовать ОС или оболочку (Explorer.exe) для запуска нового процесса, но только Shell будет запрашивать повышение прав.

Таким образом, вы должны указать UseShellExecute = true в ProcessStartInfo согласно этому ответу: processstartinfo-verb-runas-not-working

UseShellExecute = false позволит вамзахват сообщений стандартного вывода и стандартной ошибки .

...