Skip to content

Repository files navigation

切换电源计划 - 控制你的笔记本CPU温度

开机自启动,自动识别游戏进程并切换 Windows 电源计划,通过限制CPU频率控制温度

功能

  • 仅适用于 Windows 系统
  • 5 秒 扫描一次当前运行的进程
  • 检测到游戏进程 → 自动切换电源计划为 "3.1Ghz"
  • 游戏退出后 60 秒 无游戏 → 自动切回 "平衡"
  • 完全静默运行,无窗口,不打扰
  • 开机自动启动

使用方法

第 1 步:解锁"最大处理器频率"并创建电源计划

原版 Windows 默认隐藏"最大处理器频率"选项,先解锁它:

  1. 管理员身份右键运行 unlock-max-frequency.bat,如果你新创建的电源计划也叫3.1Ghz,那么你可以直接跳过所有步骤,直接在game_list.json里面添加你的游戏进程即可,一般来说,游戏的进程名是游戏安装目录里面启动游戏的那个exe文件名去掉exe后缀,例如"cs2.exe"应在game_list.json文件中添加"cs2"
  2. 打开 控制面板 → 电源选项 → 创建电源计划,命名为 "3.1Ghz"(也可以命名为任何你想要的名字)
  3. 进入该计划的 更改高级电源设置 → 处理器电源管理 → 最大处理器频率,设为 3100 MHz 下方是修改电源计划配置文件中的名称的方法,修改之后要编译才能顺利启动哦

验证:在命令行运行 powercfg /LIST,确认同时存在"(平衡)"和"(3.1Ghz)":

电源方案 GUID: 381b4222-...  (平衡)
电源方案 GUID: 3f594812-...  (3.1Ghz)

如果你的电源计划叫其他名字(比如"高性能"),编辑 appsettings.json 改为对应名称即可(程序会自动将名称解析为 GUID,无需你手动查找):

{
  "PowerPlanBalanced": "平衡",         // ← 改成你的默认计划名
  "PowerPlanPerformance": "3.1Ghz"     // ← 改成你的游戏计划名
}

第 2 步:配置游戏列表

编辑项目根目录下的 game_list.json,加入你的游戏进程名:

{
  "GameProcesses": [
    "cs2",
    "Expedition33_Steam"
  ]
}

⚠️ 进程名必须和任务管理器里看到的一模一样!

如何确认进程名:

  1. 打开游戏
  2. Ctrl+Shift+Esc 打开任务管理器 → "详细信息" 选项卡
  3. 找到游戏进程的"名称"列,比如 Expedition33_Steam.exe
  4. 填这个名字(带不带 .exe 都可以)

第 3 步:编译

双击运行 build.bat,或在终端执行:

build.bat

需要 .NET 8.0 SDK。如未安装:winget install Microsoft.DotNet.SDK.8

编译成功后,publish 目录下会出现 AutoSwitchBattrayPlan.exe 和两个配置文件的副本。


第 4 步:测试运行

双击 publish\AutoSwitchBattrayPlan.exe,它会在后台静默启动。

验证方式:

  1. 打开任务管理器 → "详细信息",搜索 AutoSwitchBattrayPlan,看到进程说明正在运行
  2. 打开你的游戏 → 等 5 秒 → 去"控制面板 → 电源选项"确认计划变成了"3.1Ghz"
  3. 关闭游戏 → 等 60 秒 → 确认计划自动切回"平衡"

💡 测试时可以在 game_list.json 里临时加上 notepad.exe,打开记事本来验证。


第 5 步:设为开机自启

管理员身份打开 PowerShell,运行:

$regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
$exePath = "d:\Zht20241287\AutoSwitchBattrayPlan\publish\AutoSwitchBattrayPlan.exe"
Set-ItemProperty -Path $regPath -Name "AutoSwitchBattrayPlan" -Value $exePath

⚠️ 注意:如果你的项目放在其他路径,请把 $exePath 改成对应的绝对路径。

重启电脑后程序会自动运行。


取消开机自启

Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "AutoSwitchBattrayPlan"

配置说明

appsettings.json — 主配置

配置项 默认值 说明
PowerPlanBalanced "平衡" 默认电源计划名称
PowerPlanPerformance "3.1Ghz" 游戏时切换到的电源计划名称
PollIntervalSeconds 5 进程扫描间隔(秒)
SwitchBackDelaySeconds 60 游戏退出后延迟切回的秒数

game_list.json — 游戏进程清单

配置项 说明
GameProcesses 字符串数组,每个元素是一个游戏进程名

常见问题

Q: 改了游戏列表后需要重新编译吗?
A: 如果程序没有在运行,直接把 game_list.json 复制到 publish\ 目录覆盖即可。如果程序正在运行,改完后重启它就行。

Q: 切换失败?
A: 运行 powercfg /LIST 确认电源计划名称拼写是否和 appsettings.json 里完全一致。

Q: 怎么确认程序在正常运行?
A: 任务管理器里搜索 AutoSwitchBattrayPlan,看到进程就说明在运行。

Q: 想要日志文件?
A: 用命令行启动可以重定向日志:

Start-Process ".\publish\AutoSwitchBattrayPlan.exe" -RedirectStandardOutput "stdout.log"

项目结构

AutoSwitchBattrayPlan/
├── Program.cs                # 入口,Host 构建
├── Config.cs                 # 配置模型
├── ProcessScanner.cs         # 进程扫描(忽略大小写匹配)
├── PowerPlanSwitcher.cs      # 电源计划切换(名称→GUID 解析)
├── PowerPlanWorker.cs        # 核心逻辑(扫描→判断→切换→等待→切回)
├── appsettings.json          # 主配置
├── game_list.json            # 🎮 游戏进程名单(编辑这个!)
├── build.bat                 # 一键编译
├── README.md                 # 本文件
└── publish/                  # 编译输出(运行 exe 的目录)

About

通过修改电源计划,限制CPU最高频率,从而在尽可能少的损失帧数的情况下降低笔记本玩游戏时的CPU温度

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages