最近遇到了一件糟心的事,电脑屏幕不会自动熄灭,电脑显示器一直亮感觉很不好。最后经过我研究发现是一款软件阻止系统息屏导致的。但是由于工作原因这个软件必开,所以没办法只能寻找办法让电脑正常息屏。
所谓功夫不负有心人,还真让我找到了,操作也很简单,下面我就介绍一下具体操作步骤以及原理。
Windows 电源管理命令
powercfg -?
POWERCFG /命令 [参数]
描述:
使用户可以控制本地系统上的电源设置。
有关命令和选项的详细信息,请运行 "POWERCFG /? <COMMAND>"
命令列表:
/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 返回符合指定条件的设备列表。
/DEVICEENABLEWAKE 使设备从睡眠状态唤醒系统。
/DEVICEDISABLEWAKE 禁止设备从任何睡眠
状态唤醒系统。
/LASTWAKE 报告有关从上次睡眠转换中
唤醒系统的信息。
/WAKETIMERS 枚举活动的唤醒计时器。
/REQUESTS 枚举应用程序和驱动程序的电源请求。
/REQUESTSOVERRIDE 为特定进程、
服务或驱动程序设置电源请求替代。
/ENERGY 分析系统中常见的能量效率和
电池使用时间问题。
/BATTERYREPORT 生成电池使用情况的报告。
/SLEEPSTUDY 生成系统电源转换的诊断报告。
/SRUMUTIL 从系统资源使用状况监视器(SRUM)转储能量
估算数据。
/SYSTEMSLEEPDIAGNOSTICS
系统睡眠诊断报告已弃用且
替换为系统电源报告。请使用命令
改用 "powercfg /systempowerreport"。
/SYSTEMPOWERREPORT 生成系统电源转换的诊断报告。
/POWERTHROTTLING 为应用程序控制电源节流。
/PROVISIONINGXML, /PXML 生成包含电源设置覆盖项的 XML 文件。
通过Windows的电源管理命令的帮助手册,我发现有一个 /REQUESTS 命令介绍是枚举应用程序和驱动程序的电源请求。咱就想吗,软件一直唤醒屏幕应该与这个有关系,执行这个命令,就能列出驱动程序和应用程序的电源请求
PS C:\Users\muxin> powercfg /requests
DISPLAY:
[PROCESS] \Device\HarddiskVolume6\红瓦科技\协同大师V8.0.2\HW.Collaborate.ClientApp.exe
SYSTEM:
[PROCESS] \Device\HarddiskVolume6\红瓦科技\协同大师V8.0.2\HW.Collaborate.ClientApp.exe
AWAYMODE:
无。
执行:
无。
PERFBOOST:
无。
ACTIVELOCKSCREEN:
无。
通过执行枚举电源请求命令我们能发现,有一个软件请求了 DISPLAY和SYSTEM两个电源请求,根据字面意思可以知道这个软件阻止电脑自动息屏以及电脑自动睡眠。
然后在第一条命令中我发现“/REQUESTSOVERRIDE”命令的介绍是“为特定进程、服务或驱动程序设置电源请求替代。”,这个命令介绍就很模棱两可,什么请求替代?替代什么?通过字面意思很难理解这个命令的具体行为以及功能。但是实践出真理,经过我的实验发现所谓的“电源请求替代”实际上的意义是“忽略电源请求”。也就是说,我们只要使用“/REQUESTSOVERRIDE”忽略指定的软件、驱动、服务的电源请求,就可以实现阻止软件、驱动、服务导致的显示器不自动息屏,以及系统不自动休眠。
我们先看看这条命令的详细介绍
powercfg /REQUESTSOVERRIDE -?
POWERCFG /REQUESTSOVERRIDE [<CALLER_TYPE> <NAME> <REQUEST>]
描述:
为特定进程、服务或驱动程序设置电源请求替代。
如果未指定任何参数,则该命令显示
电源请求替代的当前列表。
参数列表:
<CALLER_TYPE> 指定下列调用方类型之一: PROCESS、
SERVICE、DRIVER。可以通过调用
"POWERCFG /REQUESTS" 命令获取。
<NAME> 指定调用方名称。这是通过
调用 "POWERCFG /REQUESTS" 命令返回的名称。
<REQUEST> 指定下列一个或多个电源请求类型:
DISPLAY、SYSTEM、 AWAYMODE。
示例:
POWERCFG /REQUESTSOVERRIDE PROCESS wmplayer.exe DISPLAY SYSTEM
通过帮助程序能看到“忽略电源请求”这条命令的使用方式
POWERCFG /REQUESTSOVERRIDE [<应用程序类型> <程序名称> <电源请求类型>]
最终命令
1.禁止 HW.Collaborate.ClientApp.exe 的 阻止自动息屏(DISPLAY)请求和阻止系统睡眠(SYSTEM)请求。
PS C:\Users\muxin> POWERCFG /REQUESTSOVERRIDE PROCESS HW.Collaborate.ClientApp.exe DISPLAY SYSTEM
# 执行上面的命令后 然后无参调用 REQUESTSOVERRIDE 来查看我们的设置是否成功
PS C:\Users\muxin> POWERCFG /REQUESTSOVERRIDE
[SERVICE]
[PROCESS]
HW.Collaborate.ClientApp.exe DISPLAY SYSTEM
[DRIVER]
2.只阻止 HW.Collaborate.ClientApp.exe 的 阻止自动息屏(DISPLAY)请求。
PS C:\Users\muxin> POWERCFG /REQUESTSOVERRIDE PROCESS HW.Collaborate.ClientApp.exe DISPLAY
# 执行上面的命令后 然后无参调用 REQUESTSOVERRIDE 来查看我们的设置是否成功
PS C:\Users\muxin> POWERCFG /REQUESTSOVERRIDE
[SERVICE]
[PROCESS]
HW.Collaborate.ClientApp.exe DISPLAY
[DRIVER]
3.只阻止 HW.Collaborate.ClientApp.exe 的 阻止系统睡眠(SYSTEM)请求。
PS C:\Users\muxin> POWERCFG /REQUESTSOVERRIDE PROCESS HW.Collaborate.ClientApp.exe SYSTEM
# 执行上面的命令后 然后无参调用 REQUESTSOVERRIDE 来查看我们的设置是否成功
PS C:\Users\muxin> POWERCFG /REQUESTSOVERRIDE
[SERVICE]
[PROCESS]
HW.Collaborate.ClientApp.exe SYSTEM
[DRIVER]
总结:
通过 POWERCFG /REQUESTSOVERRIDE 命令忽略响应的请求后重启电脑我发现电脑终于能正常的息屏了,对于这种垃圾软件我真是无语至极,它们就不能在软件设置里弄个阻止系统息屏、阻止系统睡眠的开关吗?就不能让用户手动设置是否让你这个垃圾来做这件事吗?可以默认阻止但是要给我们用户选择的权力!