【问题标题】:C# : Switch between power plansC#:在电源计划之间切换
【发布时间】:2011-05-13 11:41:17
【问题描述】:

我正在创建一个 API,我想在电源计划之间切换

[平衡、高性能、功率 保护程序]

,我的问题不在代码上,编码很容易,但我想知道在哪里可以找到这些电源平面 .exe 文件甚至注册表中的值来修改它

【问题讨论】:

  • 如果您正在创建 API,您不想始终为客户提供最高性能吗?除非您拥有大量机器,否则能源成本不会那么高......
  • @FreeAsInBeer 他的意思是他想更改当前的 Windows 电源计划(例如,您可能希望在笔记本电脑上使用省电模式)。

标签: c# windows registry


【解决方案1】:

Raymond Chen的最新帖子恰好是关于这个的,他建议如下:

如果您使用的是 Vista 或更高版本,请从命令行运行:

powercfg -aliases

但是,这对我不起作用,因为-aliases 不是 Windows XP 上的有效开关。

编辑:或者,您可以使用这个list of helpful GUIDs

【讨论】:

  • powercfg -L 应该是一个有效的替代方案。可以与powercfg -GETACTIVESCHEMEpowercfg -SETACTIVESCHEME配合使用进行切换
  • @ZombieSheep 这不显示数字 ID - 它只显示“友好”名称。我也试过-L -N,但没有乐趣。
  • 有趣 - 在我的机器上它显示了完整的 GUID 和方案名称。话虽如此,ALIASES 开关也存在,所以它可能是依赖于操作系统版本的东西。 (此处为 Win 7 Enterprise)
  • @ZombieSheep 是的 - 我检查了一下,看起来在 Vista 中引入了别名开关。
【解决方案2】:

虽然您当然可以使用像 powercfg 这样的外部工具,但您也可以使用电源管理 API

http://msdn.microsoft.com/en-us/library/aa372711%28v=VS.85%29.aspx

或 Windows 管理工具 (WMI)

http://msdn.microsoft.com/en-us/library/dd904518%28v=VS.85%29.aspx

【讨论】:

    【解决方案3】:

    您可以在 winnt.h SDK 头文件中找到它们。 VS2008 存储在 c:\program files\microsoft sdks\windows\v6.0a\include 中,VS2010 存储在 v7.0a 中。搜索“GUID_MAX_POWER_SAVINGS”找到这个:

    // =========================================
    // Define GUIDs which represent well-known power schemes
    // =========================================
    //
    
    //
    // Maximum Power Savings - indicates that very aggressive power savings measures will be used to help
    //                         stretch battery life.
    //
    // {a1841308-3541-4fab-bc81-f71556f20b4a}
    //
    DEFINE_GUID( GUID_MAX_POWER_SAVINGS, 0xA1841308, 0x3541, 0x4FAB, 0xBC, 0x81, 0xF7, 0x15, 0x56, 0xF2, 0x0B, 0x4A );
    
    //
    // No Power Savings - indicates that almost no power savings measures will be used.
    //
    // {8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c}
    //
    DEFINE_GUID( GUID_MIN_POWER_SAVINGS, 0x8C5E7FDA, 0xE8BF, 0x4A96, 0x9A, 0x85, 0xA6, 0xE2, 0x3A, 0x8C, 0x63, 0x5C );
    
    //
    // Typical Power Savings - indicates that fairly aggressive power savings measures will be used.
    //
    // {381b4222-f694-41f0-9685-ff5bb260df2e}
    //
    DEFINE_GUID( GUID_TYPICAL_POWER_SAVINGS, 0x381B4222, 0xF694, 0x41F0, 0x96, 0x85, 0xFF, 0x5B, 0xB2, 0x60, 0xDF, 0x2E );
    

    【讨论】:

      【解决方案4】:

      以下是电源管理 API 使用示例:PowerManager.cs

      【讨论】:

        【解决方案5】:

        您可以在命令行中使用Powercfg 命令

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-19
          • 2016-04-14
          相关资源
          最近更新 更多