解决软件禁止windows自动熄屏和睡眠的方法
最近发现笔记本不会自动休眠,经过排查发现是由于一款软件导致的,但是又不能不用,经过一段时间的摸索,终于把问题解决了。
先介绍一下具体操作原理,它就是通过Windows 电源管理命令来管控具体的某一个软件的对系统的电源请求。
具体如下:
先来看官方文档介绍Powercfg 命令行选项
选项 | 说明 |
---|---|
/?、-help | 显示有关命令行参数的信息。 |
/list、/L | 列出所有电源方案。 |
/query、/Q | 显示电源方案的内容。 |
/change、/X | 修改当前电源方案中的设置值。 |
/changename | 修改电源方案的名称和说明。 |
/duplicatescheme | 复制电源方案。 |
/delete、/D | 删除电源方案。 |
/deletesetting | 删除电源设置。 |
/setactive、/S | 使某个电源方案在系统上处于活动状态。 |
/getactivescheme | 检索当前活动的电源方案。 |
/setacvalueindex | 设置当系统由交流电源供电时与某项电源设置关联的值。 |
/setdcvalueindex | 设置当系统由直流电源供电时与某项电源设置关联的值。 |
/import | 从文件中导入所有电源设置。 |
/export | 将电源方案导出到文件。 |
/aliases | 显示所有别名及其相应的GUID。 |
/getsecuritydescriptor | 获取与指定的电源设置、电源方案或操作相关联的安全描述符。 |
/setsecuritydescriptor | 获取与电源设置、电源方案或操作关联的安全描述符。 |
/hibernate、/H | 启用和禁用休眠功能。 |
/availablesleepstates、/A | 报告系统上可用的睡眠状态。 |
/devicequery | 返回符合指定条件的设备列表。 |
/deviceenableawake | 启用设备将系统从睡眠状态唤醒的功能。 |
/devicedisablewake | 禁用设备将系统从睡眠状态唤醒的功能。 |
/lastwake | 报告有关哪个组件将系统从上次睡眠转换状态唤醒的信息。 |
/waketimers | 枚举活动的唤醒计时器。 |
/requests | 枚举应用程序和驱动程序电源请求。 |
/requestsoverride | 为特定的进程、服务或驱动程序设置电源请求重写。 |
/energy | 分析系统中常见的能效和电池寿命问题。 |
/batteryreport | 生成电池使用情况的报告。 |
/sleepstudy | 生成诊断系统电源转换报告。 |
/srumutil | 转储来自系统资源使用情况监视器 (SRUM) 的能源估算数据。 |
/systemsleepdiagnostics | 生成系统睡眠转换的诊断报告。 |
/systempowerreport | 生成诊断系统电源转换报告。 |
详细的具体命令使用方法在这里就不阐述了,感兴趣的可以去参考官方文档自己测试。
大家看完以后会发现有一个 /REQUESTS
命令介绍是枚举应用程序和驱动程序的电源请求,执行这个命令,就能列出驱动程序和应用程序的电源请求。
语法是:
1 | powercfg /requests |
于是我们就自己测试一下
1 | Windows PowerShell |
通过执行枚举电源请求命令我们能发现,有一个软件请求了 DISPLAY和SYSTEM两个电源请求,根据字面意思可以知道这个软件阻止电脑自动息屏以及电脑自动睡眠。
然后在官方文档中发现/REQUESTSOVERRIDE
这个命令的介绍是为特定的进程、服务或驱动程序设置电源请求重写。 如果未指定任何参数,此命令将显示当前的电源请求重写列表。也就是说我们只要使用/REQUESTSOVERRIDE
忽略指定的软件、驱动、服务的电源请求,就可以实现阻止软件、驱动、服务导致的显示器不自动息屏,以及系统不自动休眠。
语法是:
1 | powercfg /requestsoverride [caller_type name request] |
1 | powercfg /REQUESTSOVERRIDE -? |
通过帮助程序能看到“忽略电源请求”这条命令的使用方式
1 | POWERCFG /REQUESTSOVERRIDE [<应用程序类型> <程序名称> <电源请求类型>] |
最终命令
1 | POWERCFG /REQUESTSOVERRIDE PROCESS 抖音直播监控录制工具.exe DISPLAY SYSTEM |
接下来执行命令后测试,然后无参调用REQUESTSOVERRIDE
来查看我们的设置是否成功
1 | PS C:\Users\rkdawn> POWERCFG /REQUESTSOVERRIDE |
但是这时候会发现一个问题,经过我测试,貌似每次更新文件以后都要重新添加,例如改变了版本号,那该如何取消呢,经过我搜索后发现,有大佬给出了答案。
那就是添加的这个是可以在注册表删除的,老规矩,win+R打开CMD输入regedit
进入注册表
它的目录是
1 | 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerRequestOverride\Process |
结语:感谢大佬提供的教程和思路。
PS:参考文章:Windows系统禁止软件、驱动阻止系统息屏、睡眠、一劳永逸解决WIN10所有睡眠问题