如何从.NET应用程序启动'powercfg.exe-energy'?

如何从.NET应用程序启动'powercfg.exe-energy'?,.net,windows,windows-7,process,powercfg,.net,Windows,Windows 7,Process,Powercfg,当我 它输出: 能源消费诊断图书馆(energy.dll)não 卡雷加达酒店 翻译成英文: 无法加载能耗效率诊断库(Energy.dll) 即使以管理员身份运行。将工作目录设置为路径energy.dll和powercfg.exe所在位置。恐怕我无法复制您的结果;我得到了预期的结果文件。但如果有帮助,我的测试参数可能会帮助您缩小环境中的罪魁祸首: 以管理员身份运行VisualStudio2010 目标.NET 4客户端配置文件 编译x86和任何CPU二进制文件 计算机正在运行Windows 7

当我

它输出:

能源消费诊断图书馆(energy.dll)não 卡雷加达酒店

翻译成英文:

无法加载能耗效率诊断库(Energy.dll)


即使以管理员身份运行。

工作目录
设置为路径
energy.dll
powercfg.exe
所在位置。

恐怕我无法复制您的结果;我得到了预期的结果文件。但如果有帮助,我的测试参数可能会帮助您缩小环境中的罪魁祸首:

  • 以管理员身份运行VisualStudio2010
  • 目标.NET 4客户端配置文件
  • 编译x86和任何CPU二进制文件
  • 计算机正在运行Windows 7 x64

问题仅在从.NET执行应用程序时出现,当我从命令行调用它时,它正常运行。为什么要使用UseShellExecute=false?@dthorpe
RedirectStandardOutput=true
requires
UseShellExecute=false
罪魁祸首是使用“energy.dll”的参数“-energy”。在你测试这个论点的时候,我没有包括这个论点,但是现在我编辑了这个问题。我的环境和你的一样。我确实把那个论点放在那里了,这就是为什么我修改了我的答案。这是书面的,它开始工作了,但我不知道是什么导致了问题或解决了问题
using (var process = new Process
{
    StartInfo = new ProcessStartInfo
    {
         FileName = "powercfg.exe",
         Arguments = "-energy",
         RedirectStandardOutput = true,
         UseShellExecute = false,
    }
})
{
    process.Start();
    process.WaitForExit();
}