动词 = "runas" 而不是 运行 提升

Verb = "runas" not run as elevated

正如在其他 post 中讨论的那样,我了解到 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 上方 运行 时,以管理员身份右键单击,我正在获取输出。

需要进行哪些更改才能通过 C# 中的代码进行提升并输出?

Process.Start() 可以使用 OS 或 Shell (Explorer.exe) 来生成新进程,但只有 Shell 会提示海拔。

因此您必须在 ProcessStartInfo 中指定 UseShellExecute=true,根据这个答案:

使用ShellExecute=false 将允许您捕获 Standard Output and Standard Error 消息。