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

sea*_*ull 291 sleep wake-on-lan windows-10

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

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

sea*_*ull 421

概括

有很多事情会影响这一点。我知道这个网站上有很多帖子详细介绍了解决这个问题的各种不同方法;这篇文章旨在整合它们,并作为受其影响的人加入我自己对这个问题的见解。

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

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

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

懒惰的科技博主会让你相信这是你搜索的结束。虽然此步骤确实会消除一些错误的关机,但有许多设置和配置,尤其是在 Windows 10 中,无论用户干预如何,都​​无法遵守此设置。去Control Panel? Power Options. 从这里,选择列表中第一个的电源配置文件并禁用“唤醒计时器”。完成所有配置文件。

电源设置

感谢StackExchange用户olee22提供图像。

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

第二步:禁用不守规矩的reboot定时任务

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

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

从您的Control Panel,输入Administrative Tools,然后查看您的Task Scheduler. 进入任务计划程序

任务计划程序

这就是你想要的任务——下Task Scheduler LibraryMicrosoft? Windows? UpdateOrchestrator. 您想做的最重要的事情是:

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

从这里开始,您需要更改任务的权限,以便 Windows 无法骚扰它。任务位于C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator. 它被称为Reboot没有文件扩展名。右键单击它,输入属性并使自己成为所有者。最后,配置它,以便显示以下内容:

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

此处显示的文件具有 SYSTEM 的只读权限。确保没有帐户具有写访问权限,即使是您自己的帐户也没有(如果需要,您可以随时更改权限)。还请确保您Advanced从此屏幕上的按钮禁用文件的任何继承权限,以覆盖根文件夹上的任何现有权限。在您实施更改后,这将 100% 阻止 Windows 搞乱您的更改。

设置完成后,您将不再需要担心该计划任务。

如果您没有更改UpdateOrchestrator任务的权限

改变UpdateOrchestrator的任务现在需要SYSTEM权限,administrator也不需要TrustedInstaller权限。

解决这个问题的方法之一是

  1. 安装微软自己的PsTools.
  2. Command Prompt以管理员身份打开并cd进入您的本地PsTools文件夹。
  3. 执行:
    psexec.exe -i -s %windir%\system32\mmc.exe /s taskschd.msc
    
    Run Code Online (Sandbox Code Playgroud)
  4. 转到UpdateOrchestrator并禁用Reboot任务,如前所述。

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

Windows 安装过程会更改文件的权限,因此请确保在升级后再次阅读本指南。

我听说调用了一个新任务AC Power Install,它需要应用相同的步骤,但我没有看到安装 16299.192(2018-01 Meltdown 补丁)更新后在我自己的设备上生成这个任务,所以我不能绝对建议肯定。上面执行的相同步骤应该适用于已引入的任何任务。

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

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

Get-ScheduledTask | where {$_.settings.waketorun}
Run Code Online (Sandbox Code Playgroud)

完成它列出的所有任务并删除他们唤醒计算机的权限。你不需要像我们那样担心权限问题Reboot;那是一个无关紧要的案例。

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

许多 USB 硬件在使用时都能够唤醒您的 PC(例如,键盘通常会在按下键时唤醒);在这种情况下,局域网唤醒通常也是一个问题。对于初学者来说,现代硬件的一个常见且有用的功能称为“局域网唤醒”。如果您的设备通过有线以太网电缆连接到本地网络(它不适用于 Wi-Fi),您可以通过它发送通信,在收到时唤醒您的 PC。这是我经常使用的一个功能,但它必须符合要求,因为它的默认行为太过分了。

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

powercfg -devicequery wake_armed
Run Code Online (Sandbox Code Playgroud)

命令的命令提示符输出

从这里,找到Device Manager( Control Panel) 中的设备,然后在Power Management选项卡下取消它们唤醒计算机的功能。如果您有网络接口卡要保留 LAN 唤醒,请启用Only wake this device if it receives a magic packet而不是唤醒所有发送的流量。

步骤 5:检查组策略以确保完全确定

右键单击开始菜单并选择Run。输入GPEdit.MSC. 在Computer Configuration?下找到以下设置 Administrative Templates? Windows Components? Windows Updates? Enabling Windows Update Power Management自动唤醒系统以安装预定更新。双击它并将其设置为禁用。

禁用 Windows 更新唤醒功能

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

微软的某个人对此有一种幽默感。如果您在晚上被 PC 吵醒,那么您最想听到的一件事就是硬盘在每晚进行碎片整理时发出的嘎吱嘎吱声。通过查找禁用该功能Security and Maintenance的部分Control Panel。从那里,展开Maintenance并查找到 的链接Change Maintenance settings

禁用自动维护

将时间设置为更适合社交的时间(晚上 7 点很好)并禁用机器为任务唤醒自己的能力。

  • 谢谢!我特别欣赏强大而无情的决心,即在 NTFS 级别获得“重启”任务定义文件的所有权,并将狡猾的肮脏的“SYSTEM”(ab)用户减少到仅仅是读取和执行权限。如果 Microsoft 决定推出进一步有害的敌对手持式诡计,请记住一种适当的严肃方法。就像在 Boss 的美妙歌曲中一样,今天早上我醒来时看到一片空旷的天空,前一天晚上在记事本和 IE 选项卡中还有未保存的数据云。在更新和重启的祭坛上牺牲用户数据的操作系统显然未能完成其使命。 (23认同)
  • 所以我刚刚升级到 1709 并且无法让这个 Reboot-task 死掉。即使在成为此任务的唯一所有者并拥有完全权限之后,如果不提供“S-1-5-18”的密码,我也无法更改任何内容-我知道如何杀死这个该死的东西吗?! (14认同)
  • 虽然你的回答非常全面,看起来很有效,而且我对它投了赞成票,但我认为它本来可以写得更好,因为有几个部分非常模糊和/或令人困惑(特别是对于不精通 Windows 计算机的人)。举个例子:链接中的信息“使自己成为所有者”(基于命令行)与右键单击重新启动任务并选择“属性”有什么关系? (8认同)
  • 谢谢你的回答。这正是我全心全意讨厌 Windows 10 的那种行为——尽管我明确点击了其他选项,但将设置改回它认为不错的状态。其他东西也会发生,比如键盘布局。 (8认同)
  • 我无法相信用户必须经历所有这些繁琐的步骤才能在他们睡觉时不被电脑打扰。 (7认同)
  • @MFH 我自己也遇到了这个问题,我找到了解决方案,请参阅 https://superuser.com/a/1285419/118910 (5认同)
  • 对于没有组策略编辑器的 Windows 10 Home 的任何人,您可以按照 [this answer](http://superuser.com/a/357124/57398) 中所述手动修改注册表以完成相同的操作。 (3认同)
  • 如果在修改任务时要求输入“S-1-5-18”帐户的密码,则需要使用 sysinternals `psexec` 启动任务计划程序,如下所示:`.\PsExec.exe -i -s control schedtasks `. (3认同)
  • 更新 v1803 更改了 UpdateOrchestrator 计划任务和 WU 重启的权限,可以使用 Sysinternals 作为系统禁用:`psexec.exe -i -s %windir%\system32\mmc.exe /s taskschd.msc` 归功于 TrevorLaneRay https:// answer.microsoft.com/en-us/windows/forum/windows_10-update/disable-update-orchestrator-from-waking-my/19272430-f41f-4947-904c-71ab34b220f0?page=2 (3认同)
  • 很高兴听到它对某人有用。我建议亲自完成所有步骤,但我想这可能是导致您出现问题的原因。 (2认同)
  • 我爱你。如此全面,如此解脱。现在睡觉... (2认同)
  • 我做了一些改变,但这没有帮助。我刚刚在计算机(台式机)上添加了一个电源板并放入 hypernate,然后关闭电源板的电源。老派,但微软无法击败那个;-) (2认同)
  • +1 甚至教我在“开始”菜单中使用 Ctrl+Shift+Enter。不知道。 (2认同)

mou*_*sio 27

我现在使用此脚本最终阻止唤醒计时器唤醒 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 }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 看起来像一个需要管理权限的 PowerShell .ps1 脚本。要正确禁用计划任务(包括权限),请在批处理文件中组合使用 TASKEOWN、ICACLS 和 SCHTASKS。 (7认同)
  • @mousio 我必须在管理终端中运行脚本才能遇到这些。解决方案是取得它们的所有权并向管理员授予完全访问权限。至于`Set-ScheduledTask` 是不要认为它需要一个`ScheduledTask` 对象作为参数。这实际上对您修改任务有用吗?这是其他人报告的参考:https://social.technet.microsoft.com/Forums/en-US/7764223b-abb4-437c-a5fb-94c1ef5112ec (2认同)

Eri*_*ric 14

我发现另一个答案非常有帮助,如果可以的话,我会发表评论,但我想贡献一个我快速编写的软件来帮助这里找到的第 3 步和第 4 步:

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

希望它对某些人有用。

在此处输入图片说明

在此处输入图片说明

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

  • 那么如果是这个自动维护计划任务,那么为什么它不能在维护完成后让计算机重新进入睡眠状态?!那我就不会有问题了 (5认同)
  • 干得好,埃里克。 (2认同)

归档时间:

查看次数:

145499 次

最近记录:

5 年,9 月 前