ほんのささいなこと

調べたことや思ったこと。Google先生に聞いて10分で解決できなかった問題とか。

Windows10が勝手にSleepから復帰して大変迷惑

数年前から(?)Sleep中のWindows10が勝手に起動していることに気付いた。

原因はデバイスマネージャの何かしらのデバイスで『このデバイスで、コンピューターのスタンバイ状態を解除できるようにする』が有効になっていたことと、何かしらのScheduled Tasksで『タスクを実行するためにスリープを解除する』が有効になっていたことのどちらか。
以前はエクスポートしたタスクスケジューラの一覧から探し出し、手動で設定を変更したり削除出来たのだが、去年の秋あたりから(Fall Creators updatesビルド1709あたりから?)設定がグレーアウトしていて、UIから手動で変更できなくなったのでそのときのメモ。

何かのDeviceが起動している可能性

  1. コマンドプロンプトを管理者権限で実行
  2. 以下のコマンドを入力

    powercfg -devicequery wake_armed
    

  3. ファイル名を指定して実行に『devmgmt.msc』と入力しデバイスマネージャを起動して上記で出てきたデバイスを探す

    * Universal Serial Bus controllers\CSR BlueCore Device
    * Mice and other pointing devices\Logitech HID-compliant Unifying Mouse
    * Network adapters\Intel(R) Ethernet Connection (2) I219-V4

  4. "Allow this device to wake the computer"を無効にする

2019年10月追記

LogicoolマウスもしくはMicrosoftキーボードまたはその両方、またはUSB HUBを今までと違うUSBに差し直したら(どこに差してたかなんて覚えてないよ)、マウスの移動でスタンバイから復帰するようになってしまった。上記コマンドで確認してもキーボードしか有効になってないと表示される。

C:\WINDOWS\system32>powercfg -devicequery wake_armed
HID Keyboard Device
HID Keyboard Device (001)

ダメ元で両方無効にしたらマウスで起動しなくなった

C:\WINDOWS\system32>powercfg -devicequery wake_armed
NONE

なにかしらの理由でマウスがキーボードのドライバに反応している?
そのため一つだけを有効にしたらキーボードでWake、マウスではWakeしなくなった。

C:\WINDOWS\system32>powercfg -devicequery wake_armed
HID Keyboard Device (001)

Scheduled Tasksが起動している可能性

  1. コマンドプロンプトを管理者権限で実行
  2. 以下のコマンドでタスクスケジュールをxml形式でエクスポート
  3. schtasks /query /XML>SchedTasks.xml
    

  4. エクスポートしたSchedTasks.xmlを開き、以下の文字列を検索
  5. <WakeToRun>true</WakeToRun>

  6. タスクスケジューラを開き、該当タスクを無効化

Sched TasksをDisable/Delete出来ない

いつのまにかScheduled TasksのRebootにAdministratorも権限が無くなった。%windir%\system32\tasksやHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\以下のUpdateOrchestratorあたりを削除したり、権限を付与しても変わらなかった。
そのためpsexecを使ってsystem権限で削除もしくは無効化する
※psexecはSysinternalのサイトからダウンロード
※インストール不要、適当なフォルダに解凍して、command promptを管理者権限で実行してpushdでpsexec.exeがあるPathに移動
※psexecはセキュリティホールになり得るのでPathを通さない。どうしてもめんどい時はコマンドプロンプトで毎回path %path%;C:\pstoolsとかする
※以下は私の環境の場合にWindows Updateの度に復活してくる&Sleep解除される原因だったタスク。ご参考までに。
※このコマンドにたどり着く前もいろいろやっていたので、前述のエクスポートしたタスクでWakeToRunがTrueになっているタスクは片っ端から『タスクを実行するためにスリープを解除する』、タスクの無効化、またはタスクの削除が必要かもしれない

無効化するコマンド:
Windows 10 1903にしたら増えていたのでReboot_ACを追記)

psexec -s -accepteula -nobanner schtasks /Change /TN "\Microsoft\Windows\UpdateOrchestrator\Reboot" /DISABLE
psexec -s -accepteula -nobanner schtasks /Change /TN "\Microsoft\Windows\UpdateOrchestrator\Reboot_AC" /DISABLE
psexec -s -accepteula -nobanner schtasks /Change /TN "\Microsoft\Windows\UpdateOrchestrator\MusUx_LogonUpdateResults" /DISABLE
psexec -s -accepteula -nobanner schtasks /Change /TN "\Microsoft\Windows\UpdateOrchestrator\Schedule Scan" /DISABLE
psexec -s -accepteula -nobanner schtasks /Change /TN "\Microsoft\Windows\UpdateOrchestrator\USO_Broker_Display" /DISABLE

削除するコマンド:

psexec -s -accepteula -nobanner schtasks /delete /TN "\Microsoft\Windows\UpdateOrchestrator\Reboot" /F
psexec -s -accepteula -nobanner schtasks /delete /TN "\Microsoft\Windows\UpdateOrchestrator\Reboot_AC" /F
psexec -s -accepteula -nobanner schtasks /delete /TN "\Microsoft\Windows\UpdateOrchestrator\MusUx_LogonUpdateResults" /F
psexec -s -accepteula -nobanner schtasks /delete /TN "\Microsoft\Windows\UpdateOrchestrator\Schedule Scan" /F
psexec -s -accepteula -nobanner schtasks /delete /TN "\Microsoft\Windows\UpdateOrchestrator\USO_Broker_Display" /F

Group PolicyでWindows Update自動起動を無効にする

※これでは勝手にSleep解除される現象は改善されなかったが、念のため設定

  1. ファイル名を指定して実行に『gpedit.msc』と入力しローカルグループポリシーmmcを起動
  2. Administrative Templates -> Windows Components -> Windows Update
  3. Enabling Windows Update Power Management to automatically wake up the system to install scheduled updatesを無効化する