尝试通过 C# 运行 powercfg /srumutil 时出错 Process.Start()

Error when trying to run powercfg /srumutil through C# Process.Start()

我正在尝试通过 C# 应用程序 运行 命令 powercfg /srumutil /output C:\EnergyConsumption\srumutil.csv /csv。上面的命令 运行s 在 powershell 和 cmd 中成功,但它 returns 通过我的 C# 程序执行时出现以下错误:

Unable to perform operation. An unexpected error (0x1f) has occured: A device attached to the system is not functioning.

我会澄清一下:

有问题的代码:

using System;
using System.Diagnostics;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            var info = new ProcessStartInfo()
            {
                FileName = "powercfg.exe",
                Arguments = "/srumutil /output C:\EnergyConsumption\srumutil.csv /csv",
                Verb = "runas",
                UseShellExecute = false
            };

            var proc = Process.Start(info);
            proc.WaitForExit();
            Console.ReadLine();
        }
    }
}

长话短说 powercfg /srumutil 除了通过 Process.Start() 函数外,其他地方都按预期工作。我在这里遗漏了什么吗?

我认为您的代码没有问题,正如您所怀疑的那样,问题出在执行上下文中。在 non-elevated PowerShell 会话中尝试 运行 powercfg /srumutil 时,我遇到了同样的错误,而它在提升的情况下工作正常,这表明缺乏管理员权限。但是,在这种情况下,错误消息可能会产生误导。当 运行 在 x86 进程中而不是 x64 中使用代码时,我也会遇到同样的错误——在 PowerShell 和 C# 中都是如此。尝试检查您的应用程序是 x86 还是 x64,并将其与您测试 powercfg /srumutil 运行 正常的 PowerShell 进程进行比较。