我有一台电脑,可以在一周中特定日期的特定时间通过远程桌面访问。身体上不方便,所以我希望它自己醒来并在这些时间保持清醒,但可以在其他任何时间睡觉。我既不需要也不希望它“在 LAN 上唤醒”(主要是因为a)我不希望它在每次打开 Windows 资源管理器窗口时唤醒,并且b)我发现“在 LAN 上唤醒”功能是挑剔和不可靠)。
为了解决这个目标,我powercfg
通过任务计划程序使用了命令,如对这个问题的回答所示。这几乎可以工作;事实上,这些任务确实可以根据需要正确更改电源方案。但是,两分钟后,计算机在醒来后选择“高性能”方案后立即进入睡眠状态,即使该方案专门禁用睡眠。
我需要更改哪些 Windows 设置以使计算机在任务运行后保持唤醒并将“高性能”方案设置为活动电源计划?
Windows 实际上有第二个隐藏设置来控制睡眠行为。每当计算机由于某种原因唤醒时使用,而不是用户明确这样做,例如当计划任务已配置为在计算机运行时唤醒计算机。此设置的默认值为
2 Minutes
。可以在“电源选项”对话框中更改此设置,但只能在取消隐藏后更改。您可以使用以下命令完成此操作:
powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 -ATTRIB_HIDE
这告诉从设置的“睡眠”子部分下的“睡眠无人值守睡眠超时”设置
powercfg
中删除该ATTRIB_HIDE
属性。该设置的 GUID 是. 在命令提示符窗口中运行该命令后,下次打开“电源选项”对话框时,您将看到此设置可用:7bc4a2f9-d8fc-4469-b07b-33eb785aaca0
只需将值更改为您喜欢的任何值,即只要您希望它在醒来运行计划任务后保持清醒,就足以让计算机保持清醒。将值设置为
0 Minutes
以完全禁用超时;这将允许计算机遵循电源计划的常规“Sleep after”设置。如果您想再次隐藏该选项,只需将
ATTRIB_HIDE
值恢复为设置:powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 +ATTRIB_HIDE
只有一种正确的方法可以做到这一点。一个从不更改设置。
在程序运行时运行防止睡眠或显示器关闭的程序。不影响屏保。
有关更多信息,请参阅文档https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setthreadexecutionstate
注意:不要使用常量
ES_USER_PRESENT
因为它总是会失败。从上面的链接
使用
也发布到我的存储库https://winsourcecode.blogspot.com/2020/05/keepdisplayon-runs-program-preventing.html