Третья «серия» здесь.
Поскольку вчера днем отправленный спать комп снова сам проснулся, я решил поискать причины.
Наткнулся на эту эту статью:
C:\Windows\system32>powercfg -waketimers Timer set by [PROCESS] Legacy Kernel Caller expires at 21:45:55 on Ср, 12/12/18. Reason:
Попробовал отключить:
powercfg -requestsoverride Driver "Legacy Kernel Caller" System
Не помогло.
Посмотрел список задач, которые будят комп, там вообще ничего похожего не было:
PS C:\Windows\system32> Get-ScheduledTask | where {$_.settings.waketorun} TaskPath TaskName State -------- -------- ----- \Microsoft\Windows\.NET Framework\ .NET Framework NGEN v4.0.30319... Ready \Microsoft\Windows\.NET Framework\ .NET Framework NGEN v4.0.30319... Ready \Microsoft\Windows\SharedPC\ Account Cleanup Disabled
При этом, если открыть Task Scheduler в оснастке Управления компьютером, то у этих задач галочка НЕ установлена!
Оказалось, что и в этот раз причина была все в том же \Microsoft\Windows\UpdateOrchestrator\Reboot. После очередной установки обновлений Windows вернул этой задаче возможность будить комп. И хотя в этой задаче галочка также была не установлена, тем не менее задача отработала 15.12.18 в 17:16 и успешно разбудила комп!
Оказывается, эта задача активируется каждый раз после установки обновлений!
Попробовал написать скрипт PreventWakeUp.ps1:
icacls $env:windir"\System32\Tasks\Microsoft\Windows\UpdateOrchestrator\Reboot" `
/inheritance:r `
/deny "Everyone:F" `
/deny "SYSTEM:F" `
/deny "Local Service:F" `
/deny "Administrators:F"
Write-EventLog –LogName System –Source "Microsoft-Windows-TaskScheduler" –EntryType Warning –EventID 102 –Message "<Prevent Wake up> has finished working"
Сначала поместил его в планировщик на задачу, которая запускает этот скрипт при появлении в EventLog события перехода компьютера в спящий режим. Но это не сработало. Скорее всего комп засыпал раньше, чем срабатывала задача Планировщика.
Тогда я поместил скрипт в групповые политики Shutdown:
gpedit.msc -> Computer Configuration -> Windows Settings -> Scripts (Startup/Shutdown) -> Shutdown -> PowerShell Scripts
Теперь в Журнале событий можно было увидеть запись от источника TaskScheduler.
хотя этот источник я выбрал когда тестировал скрипт. Поскольку запуск скрипта через планировщик не сработал, то лучше будет выбрать какой-то другой источник или создать свой.
Таким образом, через групповые политики скрипт отработал.
Если через политики не хочется, то можно запихнуть выполнение скрипта в Планировщик на событие Входа в систему. Но в этом случае после установки обновлений нужно не сразу выключить комп, а сначала его перезагрузить, а потом зайти в сеанс пользователя (чтобы отработал скрипт) и только потом выключить или перевести комп в режим гибернации.
В моем случае в Журнале была такая запись: «Wake Source: Unknown», а комп все равно продолжал просыпаться даже при отключении всех видимых и невидимых источников, т.е. причиной не был UpdateOrchestrator. Я заглянул в BIOS материнки ASUS P8B75-V. Там у меня было также отключено всё в разделе Advanced\APM. Однако я нашел ещё одну настройку Advanced\AMT Configuration\Intel AMT:
Wake-on-LAN позволяет будить комп, если на сетевую карту посылается так называемый «magic packet«, возможно здесь используется подобная технология. Сейчас я эту функцию отключил, надеюсь комп больше не будет просыпаться сам по себе…
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024