Windows8.1で深夜勝手にスリープが解除される問題の解決方法


Windows8.1にして随分経ちました。セキュリティが固いOSですが、快適に使えています。

さて、Windows8.1にしてから当環境で発生していたにも関わらず放置していた問題がありあます。
それは「スリープ状態にしても深夜勝手にスリープが解除される」という問題です。

正確には「深夜3時~5時辺り」という時間にスリープ状態のパソコンが勝手に立ち上がっているみたいなのです。私は全く気づかず寝たままなのですが、朝起きるとパソコンが起動しっぱなしというのは電気代も勿体ないので解決策を探してきました。

内容は「Regular Maintenance」と「自動メンテナンス」という機能をどうにかするというものです。

症状

この問題はWindows8以降に起こる問題のようで、私はWindows8.1へアップデートした後に発生しました。

寝る前にはちゃんとスリープ状態にしたはずなのに、朝起きると隣に置いてあるメインのデスクトップパソコンが起動しているのです。すぐ仕事があるのでその時は電源ボタンを押してもう一度スリープ状態にさせいるのですが、電気代も勿体ないので何とかしたい問題です。

ただ、それ以外の害はなかったので先に「Windows8.1で外付けHDDがスリープする問題」の方を片付けていました。余裕がでてきたのでこちらにも着手した次第です。

原因を発見する方法

さて、こういったOSの起動などに関する問題には「イベント ビューアー」で「Windows ログ」を見るのが定石です。
「Windows ログ」の見方は下記の通りです。

  1. Windows8以降ならば、左下までマウスカーソルをもってきた後「右クリック」してメニューを出し、「イベント ビューアー」を選んでください。イベントビューアー Win8

    この問題はWindows8以降特有の問題らしいですが、一応Windows7の場合も解説。
    Windows7以前であれば、コントロールパネルの「管理ツール」から「イベント ビューアー」を選んでください。(Windows8以降でも同様の操作でイベントビューアーを開けます)

    イベントビューアー イベントビューアー Win7前

  2. イベントビューアーが開いたら「Windows ログ」→「システム」と開きます。
    ここで問題の情報を探します。Windowsログ

「Regular Maintenance」というタスクが問題みたい

ここで夜の0時~朝8時(寝ている時間)のログを調べてみます。
どこかにスリープを解除した原因のログがあるはず・・・

見つけました。どうやらこれのようです。「Regular Maintenance」というタスクがスリープを解除しているようです。


▲クリックで拡大

システムは低電力状態から再開しました。
スリープ時間: ‎2013‎-‎12‎-‎01T14:58:14.389218300Z
スリープ解除時間: ‎2013‎-‎12‎-‎01T20:59:15.962126700Z
スリープ状態の解除元: タイマー - Windows は、スリープ状態の解除を要求した
スケジュールされたタスク
'NT TASK\Microsoft\Windows\TaskScheduler\Regular Maintenance' を実行します。
SleepTime 2013-12-01T14:58:14.389218300Z
WakeTime 2013-12-01T20:59:15.962126700Z
SleepDuration 4835
WakeDuration 460
DriverInitDuration 316
BiosInitDuration 1179
HiberWriteDuration 7573
HiberReadDuration 0
HiberPagesWritten 349479
Attributes 24593
TargetState 4
EffectiveState 5
WakeSourceType 5
WakeSourceTextLength 106
WakeSourceText Windows は、スリープ状態の解除を要求したスケジュールされたタスク
'NT TASK\Microsoft\Windows\TaskScheduler\Regular Maintenance' を実行します。
WakeTimerOwnerLength 52
WakeTimerContextLength 18
NoMultiStageResumeReason 0
WakeTimerOwner \Device\HarddiskVolume2\Windows\System32\svchost.exe
WakeTimerContext SystemEventsBroker

「Regular Maintenance」とは? 「自動メンテナンス機能」について

Windows8 以降、OSの動作パフォーマンスを低下させないために「自動メンテナンス」という機能が追加されました。この「自動メンテナンス」を実行するためのタスクが「Regular Maintenance」のようです。

これに関しては以下の記事が参考になるので、一部引用いたします。

さて、Windows 8には、OSの動作パフォーマンスを低下させないために「自動メンテナンス」という機能が追加されました。これは、毎日指定時間(初期状態では午前3時)のアイドル時に実行され、Windows Updateや(Windows Defenderによる)セキュリティスキャン、システム診断などが実行されるというもの。

~中略~

加えて自動メンテナンスを自動実行させるには、コンピューター未使用時にスリープを選択しなければなりません。シャットダウンした場合は実行されないため、次回起動時のアイドル時に実行されることになります。

http://news.mynavi.jp/column/windows/242/

これがスリープ解除の原因で確定ですね。

スリープ中であってもスリープを解除するような設定があり、これが有効になっていると標準設定で3時にスリープを解除しメンテナンスを実行するようです。ただ、スリープが解除されてメンテナンスが終われば勝手にまたスリープに戻るよう?なのですが、メンテナンスに時間がかかることもあるようで朝まで起動しっぱなしという状況になっているみたいです。

このメンテナンスですが、主な内容は下記のようなものだそうです。

  • 更新プログラムのチェックとインストール
  • セキュリティ スキャン、ウイルス定義ファイルの更新
  • システムの診断

更新プログラムのチェックもしているようなプログラムなので、これ自体を無効化するのはちょっと問題ありそうです。なので、スリープが解除されないようにだけしてみましょう。

「自動メンテナンス機能」でスリープ解除しないように設定

「自動メンテナンス」は下記の方法で設定箇所まで行けます。

    1. 「コントロールパネル」を開き、「アクションセンター」を選択します。アクションセンター
    2. 「メンテナンス」セクションを展開し、「自動メンテナンス」にある<メンテナンス設定の変更>を選択肢ます。メンテナンス設定の変更
      ▲クリックで拡大
    3. 「スケジュールされたメンテナンスによるコンピューターのスリープ解除を許可する」のチェックを外します。また、私が起床して出勤するちょっと前に確認できるように念のため実行時間を「8:00」に設定しました。これで深夜勝手に起動するようなことはなくなるはずです。

      メンテナンス設定の変更
      ▲クリックで拡大

念のため、タスクスケジューラーの方でも確認してみました。

スリープから解除されないように設定し直されているようです。

タスクスケジューラー
▲クリックで拡大

まとめ

今のところ、これで深夜勝手に起動するようなことは無くなりました。

この「自動メンテナンス」ですが、アイドル時であれば定期的に実行しているようですので、スペックが低いパソコンだとこれにリソースを取られて動作が重くなるようなことがありようです。ですので、自動実行が嫌であればデメリットを理解して無効にするということもありです。

無効にする場合は「タスクスケジューラー」から「Regular Maintenance」を無効にすればOKです。ただ、定期的なメンテナンスが自動実行されなくなるので、今度は適期に手動で実行してみてください。