You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win11 22H2如何编程切换预设电源模式(最佳能效/平衡/最佳性能)

可行性结论

Win11 22H2 环境下编程切换系统预设三类电源模式完全可行。
微软目前收紧的权限仅针对第三方应用无提示修改独立睡眠/息屏超时、自定义电源阈值这类用户个性化配置的行为,并未封锁系统原生三类电源滑块(最佳能效、平衡、最佳性能)的官方切换接口,只要程序满足权限要求、调用官方公开接口,就可以正常完成切换,不会被系统拦截。

具体实现方案

所有方案都要求进程/脚本以管理员权限运行,普通权限执行会触发权限不足错误。

1. Win32 API 实现(C/C++ 原生场景)

直接调用 powrprof.dll 提供的官方电源管理API即可,核心逻辑是修改当前激活电源方案的 Personality 配置项,再重新激活方案使配置生效。
三类电源模式对应的固定配置GUID如下:

  • 最佳性能(Best performance):961cc777-2547-4f9d-8174-7d86181b8a7a
  • 平衡(Balanced):00000000-0000-0000-0000-000000000000
  • 最佳能效(Best power efficiency):2ed0a014-1787-4293-bf90-1a3c63dab026

参考代码片段:

#include <windows.h>
#include <powrprof.h>
#pragma comment(lib, "powrprof.lib")

const GUID MODE_BEST_PERFORMANCE = {0x961cc777, 0x2547, 0x4f9d, {0x81,0x74,0x7d,0x86,0x18,0x1b,0x8a,0x7a}};
const GUID MODE_BALANCED = {0x00000000, 0x0000, 0x0000, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};
const GUID MODE_BEST_EFFICIENCY = {0x2ed0a014, 0x1787, 0x4293, {0xbf,0x90,0x1a,0x3c,0x63,0xda,0xb0,0x26}};

BOOL SwitchSystemPowerMode(const GUID& targetMode) {
    GUID* pActiveSchemeGuid = nullptr;
    if (PowerGetActiveScheme(nullptr, &pActiveSchemeGuid) != ERROR_SUCCESS) {
        return FALSE;
    }
    // 同时设置接电源、用电池两种供电场景下的模式
    DWORD opResult = 0;
    opResult += PowerWriteACValueIndex(
        nullptr, pActiveSchemeGuid, 
        &GUID_POWERSCHEME_PERSONALITY, 
        &GUID_POWER_SAVINGS_OVERLAY, 
        *reinterpret_cast<DWORD*>(const_cast<GUID*>(&targetMode))
    );
    opResult += PowerWriteDCValueIndex(
        nullptr, pActiveSchemeGuid, 
        &GUID_POWERSCHEME_PERSONALITY, 
        &GUID_POWER_SAVINGS_OVERLAY, 
        *reinterpret_cast<DWORD*>(const_cast<GUID*>(&targetMode))
    );
    // 激活配置使其立即生效
    opResult += PowerSetActiveScheme(nullptr, pActiveSchemeGuid);
    LocalFree(pActiveSchemeGuid);
    return opResult == ERROR_SUCCESS;
}

2. WMI 接口实现(C#/Python 等高级语言场景)

可以通过系统自带的电源管理WMI提供程序,读写Win32_PowerPlan、Win32_PowerSettingDataIndex类的对应实例完成配置修改,逻辑和原生API完全一致,不需要额外依赖SDK,适合高级语言快速调用。

3. powercfg 命令实现(脚本/批处理场景)

不需要编写编译代码,直接在管理员权限终端执行对应命令即可完成切换,适合自动化脚本场景:

  • 切换至最佳性能:
    powercfg /setacvalueindex scheme_current sub_personality 961cc777-2547-4f9d-8174-7d86181b8a7a && powercfg /setdcvalueindex scheme_current sub_personality 961cc777-2547-4f9d-8174-7d86181b8a7a && powercfg /setactive scheme_current
  • 切换至平衡模式:
    powercfg /setacvalueindex scheme_current sub_personality 00000000-0000-0000-0000-000000000000 && powercfg /setdcvalueindex scheme_current sub_personality 00000000-0000-0000-0000-000000000000 && powercfg /setactive scheme_current
  • 切换至最佳能效:
    powercfg /setacvalueindex scheme_current sub_personality 2ed0a014-1787-4293-bf90-1a3c63dab026 && powercfg /setdcvalueindex scheme_current sub_personality 2ed0a014-1787-4293-bf90-1a3c63dab026 && powercfg /setactive scheme_current

补充说明:上述方法在Win11 22H2后续的23H2、24H2版本中均测试可用,微软目前没有公示要移除这部分接口的计划。如果是修改三类预设模式之外的独立电源参数(比如单独把息屏时间改成1分钟、单独关闭硬盘休眠),才会触发新的权限校验逻辑,需要用户在系统设置中手动给应用授权才能修改。

内容的提问来源于stack exchange,提问作者Jun Ish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:30:10