sea*_*ull 291 sleep wake-on-lan windows-10
如何在没有用户干预的情况下阻止 Windows 10 桌面从睡眠/休眠电源状态唤醒?
对于许多用户来说,这不是问题,但是,如果您与 PC 睡在同一个房间里,那么让您的机器在凌晨 3:30 醒来下载更新是很烦人的。
sea*_*ull 421
有很多事情会影响这一点。我知道这个网站上有很多帖子详细介绍了解决这个问题的各种不同方法;这篇文章旨在整合它们,并作为受其影响的人加入我自己对这个问题的见解。
步骤 2 中概述的修复程序还可用于阻止 Windows 10 在安装 Windows 更新后重新启动计算机。
此修复程序也适用于秋季更新 (1709)。不过,您将需要再次禁用“重新启动”任务并重新配置安全权限,因为更新过程会替换它。
懒惰的科技博主会让你相信这是你搜索的结束。虽然此步骤确实会消除一些错误的关机,但有许多设置和配置,尤其是在 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 Library?Microsoft? Windows? UpdateOrchestrator. 您想做的最重要的事情是:
从这里开始,您需要更改任务的权限,以便 Windows 无法骚扰它。任务位于C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator
. 它被称为Reboot
没有文件扩展名。右键单击它,输入属性并使自己成为所有者。最后,配置它,以便显示以下内容:
此处显示的文件具有 SYSTEM 的只读权限。确保没有帐户具有写访问权限,即使是您自己的帐户也没有(如果需要,您可以随时更改权限)。还请确保您Advanced从此屏幕上的按钮禁用文件的任何继承权限,以覆盖根文件夹上的任何现有权限。在您实施更改后,这将 100% 阻止 Windows 搞乱您的更改。
设置完成后,您将不再需要担心该计划任务。
UpdateOrchestrator
任务的权限改变
UpdateOrchestrator
的任务现在需要SYSTEM
权限,administrator
也不需要TrustedInstaller
权限。
PsTools
.cd
进入您的本地PsTools
文件夹。psexec.exe -i -s %windir%\system32\mmc.exe /s taskschd.msc
Run Code Online (Sandbox Code Playgroud)UpdateOrchestrator
并禁用Reboot
任务,如前所述。Windows 安装过程会更改文件的权限,因此请确保在升级后再次阅读本指南。
我听说调用了一个新任务AC Power Install
,它需要应用相同的步骤,但我没有看到安装 16299.192(2018-01 Meltdown 补丁)更新后在我自己的设备上生成这个任务,所以我不能绝对建议肯定。上面执行的相同步骤应该适用于已引入的任何任务。
您已禁用唤醒计时器功能,但 Windows 10 有不尊重该设置的习惯,因此为安全起见,我们将运行 PowerShell 命令以清除所有可能唤醒您的 PC 的任务。打开管理 PowerShell 命令提示符(开始,键入“Powershell”,Ctrl+Shift+Enter)并将此命令放在窗口中:
Get-ScheduledTask | where {$_.settings.waketorun}
Run Code Online (Sandbox Code Playgroud)
完成它列出的所有任务并删除他们唤醒计算机的权限。你不需要像我们那样担心权限问题Reboot
;那是一个无关紧要的案例。
许多 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而不是唤醒所有发送的流量。
右键单击开始菜单并选择Run。输入GPEdit.MSC
. 在Computer Configuration?下找到以下设置 Administrative Templates? Windows Components? Windows Updates? Enabling Windows Update Power Management自动唤醒系统以安装预定更新。双击它并将其设置为禁用。
微软的某个人对此有一种幽默感。如果您在晚上被 PC 吵醒,那么您最想听到的一件事就是硬盘在每晚进行碎片整理时发出的嘎吱嘎吱声。通过查找禁用该功能Security and Maintenance的部分Control Panel。从那里,展开Maintenance并查找到 的链接Change Maintenance settings。
将时间设置为更适合社交的时间(晚上 7 点很好)并禁用机器为任务唤醒自己的能力。
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)
如您所见,它或多或少地解决了此答案中提到的所有步骤,但计划任务文件权限除外。但是,由于我打算在每次解锁/登录时静默运行此脚本,因此我希望这根本不是问题。
Eri*_*ric 14
我发现另一个答案非常有帮助,如果可以的话,我会发表评论,但我想贡献一个我快速编写的软件来帮助这里找到的第 3 步和第 4 步:
https://github.com/Omniru/System-Wake-Manager/wiki/Home-&-Download
希望它对某些人有用。
您可能会看到此弹出窗口,必须单击“更多信息”,然后单击“仍然运行”(如果您不确定,请随时检查源代码,毕竟它在 github 上):
归档时间: |
|
查看次数: |
145499 次 |
最近记录: |