最终停止唤醒计时器以唤醒Windows 10桌面


231

如何在没有用户干预的情况下阻止Windows 10桌面从睡眠/休眠电源状态唤醒?

对于许多用户而言,这不是问题,但是,如果您与PC睡在同一房间,那么让您的计算机在凌晨3:30醒来下载更新就很烦人了。

Answers:


363

回答

有很多因素可能会影响这一点。我知道该网站上有很多帖子,详细介绍了解决此问题的各种不同方式;这篇文章旨在巩固他们的身份,并为自己受此问题影响的人提供我自己的见解。

步骤2中概述的修复程序还可用于阻止Windows 10在安装Windows Update之后重启计算机。

此修复程序也适用于秋季更新(1709)。但是,您将需要再次禁用“重新启动”任务并重新配置安全权限,因为更新过程将替换它。

步骤1:禁用所有电源配置文件的唤醒计时器

懒惰的技术博客会让您相信这是搜索的终点。确实,此步骤将消除一些错误的关机,但是有许多设置和配置,尤其是在Windows 10中,无论用户如何干预都无法遵守此设置。转到控制面板>电源选项。从这里,选择列表上第一位的电源配置文件,然后禁用“唤醒定时器”。浏览所有配置文件。

电源设定

(感谢StackExchange用户olee22提供的图像)

在Windows 10上,强烈建议您为所有电源配置文件而不是仅选择使用的电源配置文件修复此设置。各种Windows系将使用不同的配置文件;这增加了您不被唤醒的机会。

步骤2:禁用繁琐的“重新启动”计划任务

注意:我创建了一个PowerShell脚本,该脚本可用于阻止Windows 10系统重启。您可以在这里找到它:https : //github.com/seagull/disable-automaticrestarts

Windows 10的UpdateOrchestrator计划任务文件夹包含一个名为“重新启动”的任务。无论是否有可用的更新,此任务都将唤醒计算机以安装更新。仅仅删除其唤醒计算机的权限是不够的。离开任务计划程序后,Windows只会对其进行编辑以再次赋予自身权限。

在控制面板中,输入管理工具,然后查看任务计划程序。 输入任务计划程序

任务计划程序

这是您想要的任务-在“任务计划程序库”>“ Microsoft”>“ Windows”>“ UpdateOrchestrator”下。您要做的最重要的事情是:

删除任务权限以唤醒PC 禁用任务

从这里开始,您将需要更改任务的权限,以便Windows无法破坏它。该任务位于C:\ Windows \ System32 \ Tasks \ Microsoft \ Windows \ UpdateOrchestrator中。它称为“ Reboot”,没有文件扩展名。右键单击它,输入属性并使其成为所有者。最后,对其进行配置,以显示以下内容:

重新启动具有只读权限的文件

此处显示的文件具有SYSTEM的只读权限。使其没有帐户具有写访问权限,甚至没有您自己的权限(您以后可以随时更改权限)。还请确保从此屏幕上的“高级”按钮禁用该文件的所有继承权限,以覆盖根文件夹上的所有现有权限。在实施更改之后,这将100%阻止Windows干扰您的更改。

设置完毕后,您无需担心该计划任务。

Windows 1709的注意事项(秋季创作者更新)

Windows安装过程会更改文件的权限,因此请确保升级后再次阅读本指南。我听说有报道称已完成一项名为“ AC Power Install”的新任务,需要执行相同的步骤,但安装16299.192(2018-01 Meltdown补丁)更新后,我尚未在自己的设备上看到此任务,因此我不能绝对确定地提出建议。与上面执行的步骤相同的步骤应适用于已引入的任何任务。

步骤3:在PowerShell中检查唤醒计时器

您已禁用唤醒计时器功能,但Windows 10习惯不遵守该设置,因此,为了安全起见,我们将运行PowerShell命令清除所有可能唤醒计算机的任务。打开管理PowerShell命令提示符(开始,键入“ Powershell”,Ctrl + Shift + Enter),然后将此命令放在窗口中:

Get-ScheduledTask | where {$_.settings.waketorun}

完成列出的所有任务,并删除其唤醒计算机的权限。您不必像我们使用Reboot那样担心权限。那是一个例外的情况。

步骤4:检查哪些硬件可以唤醒您的PC

启用时,许多USB硬件都具有唤醒PC的能力(例如,键盘通常在按下键时起作用);在这种情况下,局域网唤醒通常也是一个问题。对于初学者来说,现代硬件的一个共同而有用的功能称为“局域网唤醒”。如果您的设备通过有线以太网电缆连接到本地网络(不适用于Wi-Fi),则可以通过它发送通信,从而在接收到PC时将其唤醒。这是我经常使用的功能,但由于它的默认行为过于狂热,因此必须将其纳入使用范围。

在管理命令提示符中输入以下命令:

powercfg -devicequery wake_armed

命令的命令提示符输出

在此处,在“设备管理器”(“控制面板”)中找到设备,然后在“电源管理”选项卡下,删除它们唤醒计算机的功能。如果您有要保留局域网唤醒功能的网络接口卡,请启用“仅在接收到魔术包时唤醒此设备”,而不是唤醒以其方式发送的所有流量。

第5步:检查组策略只是为了完全确定

右键单击“开始”菜单,然后选择“运行”。键入GPEdit.MSC。在“计算机配置”>“管理模板”>“ Windows组件”>“ Windows Updates”>“启用Windows Update电源管理”以自动唤醒系统以安装计划的更新下,找到以下设置。双击它并将其设置为禁用。

禁用Windows Update唤醒功能

步骤6:停用唤醒机器以进行自动维护

微软的某个人对此很幽默。如果您在晚上被PC唤醒,那么您最想听到的一件事就是硬盘驱动器在夜间进行碎片整理,因此嘎吱作响。通过找到“控制面板”的“安全性和维护”部分来禁用此功能。在此处展开​​“维护”,然后找到“更改维护设置”的链接。

禁用自动维护

将时间设置为更适度的时间(7PM可以),并禁用机器唤醒自己执行任务的能力。


15
谢谢!我特别赞赏Reboot在NTFS级别上拥有任务定义文件的所有权并且将偷偷摸摸的肮脏的SYSTEM(ab)用户减少为纯粹的读取和执行权限的强大而粗鲁的决心。如果Microsoft决定推出其他有害的敌对手持机谋,请记住一个适当的废话。就像老板的一首好歌一样,今天早晨,我醒来是一片空旷的天空,前一天晚上在记事本和IE选项卡中未保存数据云。在更新和重新启动的祭坛上牺牲用户数据的操作系统显然无法完成其任务。
卢米

8
尽管您的回答非常全面,似乎很有效,并且我投票赞成,但我认为应该写得更好一些,因为其中的几个部分非常模糊和/或令人困惑(尤其是对那些不懂Windows超级计算机的人)。恰当的例子:右键单击重新启动任务并选择“属性”,“使自己成为所有者”链接(基于命令行)上的信息有什么作用?
martineau '16

7
感谢您的回答。这是我全心全意讨厌Windows 10的一种行为-尽管我明确单击了其他设置,但将设置更改回它认为不错的状态。也会发生其他事情,例如键盘布局。
Dav

13
因此,我刚刚升级到1709,无法使此重启任务消失。即使成为该任务的唯一所有者并拥有完全的权限,如果没有提供“ S-1-5-18”的密码,我也无法更改任何内容-任何想法如何杀死这该死的东西?
MFH

5
@MFH我自己遇到了这个问题,我找到了解决方案,请参见superuser.com/a/1285419/118910
ohaal

26

我现在使用此脚本来最终停止唤醒计时器以唤醒Windows 10桌面

# disable wake for enabled scheduled tasks that are allowed to wake
Get-ScheduledTask |
?{ $_.Settings.WakeToRun -eq $true -and $_.State -ne 'Disabled' } |
%{
    write-host $_
    $_.Settings.WakeToRun = $false;
    Set-ScheduledTask $_
}

# disable wake for devices that are allowed to wake (list of wake capable devices: powercfg -devicequery wake_from_any)
powercfg -devicequery wake_armed |
%{
    write-host $_
    if ($_ -notmatch '^(NONE)?$')
    { powercfg -devicedisablewake $_ }
}

# disable wake timers for all power schemes
powercfg -list | Select-String 'GUID' |
%{
    write-host $_
    $guid = $_ -replace '^.*:\s+(\S+?)\s+.*$', '$1'
    powercfg -setdcvalueindex $guid SUB_SLEEP RTCWAKE 0
    powercfg -setacvalueindex $guid SUB_SLEEP RTCWAKE 0
}

# disable wake for automatic updates and for automatic maintenance
'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\AUPowerManagement', 
'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance\WakeUp' |
%{
    write-host $_
    $key = split-path $_
    $name = split-path $_ -leaf
    $type = 'DWORD'
    $value = 0
    if (!(Test-Path $key))
    { New-Item -Path $key -Force | Out-Null }
    if ((Get-ItemProperty $key $name 2>$null).$name -ne $value)
    { Set-ItemProperty $key $name $value -type $type }
}

如您所见,除了计划的任务文件权限外,它或多或少地解决了答案中提到的所有步骤。但是,由于我打算在每次解锁/登录时静默运行此脚本,所以我希望这根本不会成为问题。


它是.bat脚本吗?
alm

6
看起来像需要管理权限的PowerShell .ps1脚本。要正确禁用计划的任务(包括权限),请在批处理文件中结合使用TASKEOWN,ICACLS和SCHTASKS。
psouza4 2016年

不适用于我:(
sergiol

Get-ScheduledTask脚本的部分在找到此类任务时会失败。知道如何解决吗?
thisismydesign

2
@mousio我必须在管理终端中运行脚本才能遇到这些问题。解决方案是获得它们的所有权并授予管理员完全访问权限。至于Set-ScheduledTask是不要认为它需要一个ScheduledTask对象作为参数。这实际上对您修改任务有用吗?下面是从别人报告的引用:social.technet.microsoft.com/Forums/en-US/...
thisismydesign

10

我发现其他答案非常有用,如果可以的话,我只会发表评论,但我想提供一个我快速编写的软件,以帮助您找到此处的第3步和第4步:

https://github.com/Omniru/System-Wake-Manager/wiki/Home-&-下载

希望它对某些人有用。

在此处输入图片说明

在此处输入图片说明

您可能会看到此弹出窗口,并且必须单击“更多信息”,然后单击“仍然运行”(如果不确定,请随时检查源代码,毕竟它在github上): 在此处输入图片说明


1
很好,埃里克。
海鸥

1
因此,如果这是一项自动维护计划任务,那么为什么在维护完成后为什么无法让计算机重新进入睡眠状态呢?这样我就不会有问题
Vitas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.