Краткое содержание

Краткое содержание

Как остановить выход рабочего стола Windows 10 из спящего/гибернационного режима без вмешательства пользователя?

Для многих пользователей это не будет проблемой, но если вы спите в одной комнате с компьютером, то необходимость его пробуждения в 3:30 утра для загрузки обновлений может раздражать.

решение1

Краткое содержание

Апрель 2022 г.: Я создал новый скрипт PowerShell, который отключит запланированные задачи Windows для автоматического пробуждения устройства. Используйте его вместе с другими частями этого руководства. Загрузите его по адресу: https://github.com/seagull/disable-scheduledWaking

Есть ряд вещей, которые могут на это повлиять. Я знаю, что на этом сайте есть посты, в которых подробно описываются различные способы решения этой проблемы; этот пост призван объединить их и добавить мое собственное понимание проблемы как человека, которого она затронула.

Исправление, описанное в шаге 2, также можно использовать для того, чтобы Windows 10 не перезагружала компьютер после установки обновлений Windows.

Это исправление работает и для Fall Update (1709). Вам нужно будет снова отключить задачу «Перезагрузка» и перенастроить разрешения безопасности, поскольку процесс обновления заменяет ее.

Шаг 1: Отключите таймеры пробуждения для всех профилей питания.

Ленивые технические блогеры хотят, чтобы вы поверили, что это конец ваших поисков. Хотя верно, что этот шаг устранит несколько ошибочных выключений, есть ряд настроек и конфигураций, особенно в Windows 10, которые не соблюдают эту настройку независимо от вмешательства пользователя. Перейдите в → Control Panel. Power OptionsОтсюда выберите любой профиль питания, который стоит первым в списке, и отключите «Таймеры пробуждения». Проработайте все профили.

Настройки питания

Спасибо пользователю StackExchangeоле22для изображения.

В Windows 10 настоятельно рекомендуется исправить эту настройку.для всех профилей мощности, а не только тот, который вы выбрали для использования. Различные факультеты Windows будут использовать разные профили; это повышает ваши шансы не проснуться.

Шаг 2: Отключите неконтролируемую rebootзапланированную задачу

Папка запланированных задач UpdateOrchestrator в Windows 10 содержит задачу под названием «перезагрузка». Эта задача разбудит ваш компьютер для установки обновлений независимо от того, доступны ли они. Простого удаления разрешения на пробуждение компьютера недостаточно; Windows просто отредактирует его, чтобы снова предоставить себе разрешение после того, как вы выйдете из планировщика задач.

В вашем Control Panel, введите Administrative Tools, затем просмотрите ваш Task Scheduler. Вход в планировщик задач

Диспетчер задач

Это задача, которую вы хотите - под Task Scheduler LibraryMicrosoftWindowsUpdateOrchestrator. Самое важное, что вы хотите сделать, это:

Удалить разрешение для задачи пробуждения ПК Отключить задачу

Отсюда вам нужно будет изменить разрешения для задачи, чтобы Windows не могла ее трогать. Задача находится в C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator. Она называется Rebootбез расширения файла. Щелкните правой кнопкой мыши, введите свойства исделай себя владельцем. Наконец, настройте его так, чтобы отображалось следующее:

Перезагрузить файл с правами только на чтение

Здесь файл отображается с правами только на чтение для SYSTEM. Сделайте так, чтобы ни одна учетная запись не имела права записи, даже ваша собственная (вы всегда можете изменить права позже, если вам это нужно). Пожалуйста, также убедитесь, что вы отключили все унаследованные права для файла с помощью Advancedкнопки на этом экране, чтобы переопределить любые существующие права для корневой папки. Это на 100% остановит Windows от вмешательства в ваши изменения после их внедрения.

После настройки вам больше не придется беспокоиться об этой запланированной задаче.

Если у вас нет разрешений на изменение UpdateOrchestratorзадач

Изменение UpdateOrchestratorзадач теперь не требует SYSTEMразрешений, ни разрешений administrator, ни TrustedInstallerразрешений.

Один из способов обойти это —:

  1. Установка собственной версии MicrosoftPsTools.
  2. Откройте Command Promptот имени администратора и cdвставьте в локальную PsToolsпапку.
  3. Выполнение:
    psexec.exe -i -s %windir%\system32\mmc.exe /s taskschd.msc
    
  4. Переходим к задаче(ям) UpdateOrchestratorи отключаем ее Reboot(и), как упоминалось ранее.

Примечание для Windows 1709 (Fall Creators' Update)

Процесс установки Windows изменяет разрешения для файлов, поэтому обязательно прочитайте это руководство еще раз после обновления.

Я слышал сообщения о том, что новая задача вызывается, AC Power Installчто требует тех же шагов, применяемых к ней, но я не видел, чтобы эта задача была создана на моем собственном устройстве после установки обновления 16299.192 (2018-01 Meltdown patch), поэтому я не могу дать точный совет. Те же шаги, которые были выполнены выше, должны работать для любой введенной задачи.

Шаг 3: Проверьте таймеры пробуждения в PowerShell

Вы отключили функцию таймера пробуждения, но Windows 10 имеет привычку не уважать эту настройку, поэтому для безопасности мы запустим команду PowerShell, чтобы отсеять все задачи, которые могут, по идее, разбудить ваш ПК. Откройте административную командную строку PowerShell (Пуск, введите «Powershell», Ctrl+Shift+Enter) и поместите эту команду в окно:

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

Пройдитесь по всем перечисленным задачам и удалите их разрешение на пробуждение компьютера. Вам не нужно беспокоиться о разрешениях, как мы это делали с Reboot; это был исключительный случай.

Шаг 4: Проверьте, какое оборудование может вывести ваш ПК из спящего режима

Многие USB-устройства, будучи задействованными, способны разбудить ваш ПК (например, клавиатуры часто это делают при нажатии клавиш); пробуждение по локальной сети (wake-on-LAN) также обычно является проблемой в этом сценарии. Для непосвященных, распространенная и полезная функция современного оборудования называется «Wake on LAN». Если ваше устройство подключено к локальной сети с помощью проводного кабеля Ethernet (он не работает для Wi-Fi), вы можете отправлять сообщения, которые разбудят ваш ПК при получении. Это функция, которой я часто пользуюсь, но ее нужно привести в соответствие, так как ее поведение по умолчанию слишком усердно.

Введите следующую команду в административной командной строке:

powercfg -devicequery wake_armed

Вывод команды в командной строке

Отсюда найдите устройства в Device Manager( Control Panel) и на Power Managementвкладке удалите их способность пробуждать ваш компьютер. Если у вас есть сетевые карты, для которых вы хотите сохранить Wake-on-LAN, включите его Only wake this device if it receives a magic packetвместо пробуждения для всего трафика, отправляемого через него.

Шаг 5: Проверьте групповую политику, чтобы быть полностью уверенным

Щелкните правой кнопкой мыши меню «Пуск» и выберите Run. Введите GPEdit.MSC. Найдите следующий параметр в Computer ConfigurationAdministrative TemplatesWindows ComponentsWindows UpdatesEnabling Windows Update Power Managementдля автоматического пробуждения системы для установки запланированных обновлений. Дважды щелкните его и установите для него значение «Отключено».

Отключение функции пробуждения Центра обновления Windows

Шаг 6: Отключите функцию пробуждения компьютера для автоматического обслуживания

У кого-то в Microsoft есть чувство юмора на этот счет. Если вас разбудил ночью ваш ПК, то больше всего на свете вы хотите услышать хруст и скрежет жесткого диска, выполняющего ночную дефрагментацию. Отключите эту функцию, найдя раздел Security and Maintenance. Control PanelОттуда разверните Maintenanceи найдите ссылку на Change Maintenance settings.

Отключить автоматическое обслуживание

Установите более удобное время (вполне подойдет 7 вечера) и отключите возможность устройства просыпаться для выполнения задачи.

решение2

Теперь я использую этот скрипт дляОкончательно запретить таймерам пробуждения выводить из спящего режима рабочий стол 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 }
}

Как вы можете видеть, он более или менее охватывает все шаги, упомянутые вэтотответ, за исключением разрешений на файл запланированной задачи. Однако, поскольку я намерен молчабегатьэтот скрипт при каждой разблокировке/входе в систему, надеюсь, это не будет проблемой.

решение3

Другой ответ показался мне невероятно полезным, и я бы просто прокомментировал его, если бы мог, но я хотел бы поделиться фрагментом программного обеспечения, которое я быстро написал, чтобы помочь с шагами 3 и 4, которые можно найти здесь:

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

Надеюсь, это будет кому-то полезно.

введите описание изображения здесь

введите описание изображения здесь

Вы можете увидеть это всплывающее окно и нажать «Подробнее», а затем «Выполнить в любом случае» (если вы не уверены, не стесняйтесь проверить исходный код, в конце концов, он есть на github): введите описание изображения здесь

Связанный контент