Windows 7 がスリープモードから勝手に復帰してしまう
SOFTWARE REPORT
Windows 7 がスリープ状態から勝手に復帰する
Windows Vista の時から悩まされていた気がしますけど、Windows 7 でもスリープ状態から勝手に復帰してしまう不具合に悩まされました。
環境としては Windows Vista の Windows Media Center でテレビを見ていた時からそうで、それを Windows 7 にアップグレードしても状況は変わらずな感じでした。
インターネットで調べてみると、Windows Media Center の自動アップデートプログラムが影響しているという情報が多く見られたので、それかとも思ってみたのですけど、確かにスリープ状態から自動復帰されてしまう頻度が若干下がったような気がするものの、相変わらず勝手に復帰してしまう様子が続きました。
他にもインターネットで見つかってきた、マウスやキーボードの電源管理で、このデバイスでのスリープ解除を無効にしてみたりなどしてみたのですけど、それでも改善される様子がありません。
ちなみに、Windows Media Center の自動アップデートによるスリープ解除が行われないようにするためには、コントロールパネルから "タスクスケジューラ" を起動して、その中の "Microsoft" → "Windows" → "Media Center" にある "mcupdate_scheduled" の設定を調整します。
そして、このタスクのプロパティから、条件タブを開いて "タスクを実行するためにスリープを解除する" のチェックを外します。
マウスやキーボード、ネットワークアダプターが勝手にスリープを解除しないようにするには、コントロールパネルの "デバイスマネージャー" から、それぞれのプロパティーを参照して、電源管理から「このデバイスで、コンピューターのスタンバイ状態を解除できるようにする」のチェックを外します。
ただ、今回の自分の環境では、マウスやキーボードといったものは、設定を変えても改善される様子は見えない感じでした。
そんな中、ある理由で Windows 7 をクリーンインストールしなければならない場面があって、入れなおしをしてみたところ、ひとまずスリープからの自動復帰は収まりました。
クリーンインストールを終えた Windows 7 で Windows Media Center を使ってしばらくテレビを見たりしてましたけど、しばらくの間は Windows Media Center の自動アップデートに関する対策だけで、勝手にスリープモードが解除されることはほとんどなくなっていたような感じだったので、どうやら、どうにもならない問題である可能性が見えてきました。
イベントビュアーで詳細を確認してみると、システムログに "Power-Troubleshooter" をソースとして、次のような記録が残されているのが確認できました。
システムはスリープ状態から再開しました。
スリープ時刻: 2010-12-03T08:48:54.616748100Z
スリープ解除時刻: 2010-12-03T10:19:20.936197100Z
スリープ解除の原因: デバイス -PCI 標準 PCI-to-PCI ブリッジ
ここの "スリープ解除の原因" を見れば、原因の究明に繋がることもあるそうですけど、今回のように "デバイス -PCI 標準 PCI-to-PCI ブリッジ" では特定もなかなか難しいところでした。
それでも、少し前まではほぼ期待通りに Windows 7 が動作していたことと、Windows 7 のクリーンインストールが終わってひと段落したのを受けてシステム環境設定の微調整を行った辺りからおかしくなった感じもあって、なんらかの人的な設定により影響が発生している可能性が高い感じです。
そこで、Windows 7 が勝手に復帰していた時に、都度イベントログの内容を記録して調べてみたところ、かなり確実と思われる原因が特定されてきました。
その原因は、どうやらコントロールパネルの「電源管理」で行っていた "休止状態" 設定のように思われます。
電源管理の設定では、何も操作をしない時間があったとき、自動的にスリープ状態や休止状態へ移行するように設定することができるようになっています。
スリープモードとは、省電力状態でパソコンを起動させ、キーボードや電源ボタンに触れることで 1 秒程度で復帰できるようにする動作モードです。休止モードというのは、メモリーの内容など電源を切ると失われてしまう情報をハードディスクに記録してシャットダウンして、復帰時にそれをまるごと書き戻すことで、通常の起動よりも短い時間で、途中の状態に復帰することができるようになる動作モードです。
Windows XP の頃にスリープモードを使う場合は、例えば 60 分後にスリープ状態に移行して、180 分後に休止状態に移行するというように、スリープ状態でもなお使用しない場合には休止状態にして、さらに消費電力を抑えるという方法を採ることが一般的だったように思うのですけど、今回はどうやらこの "休止状態に移行するタイミング" で、Windows が自動復帰してしまうようでした。
イベントログを確認すると、自分で Windows を操作してスリープ状態にさせてから、電源管理の「次の時間が経過後休止状態にする」で指定している時間とおおよそ同じ時間が経過したタイミングで、イベントログに "システムはスリープ状態から再開しました。" という記録が残されているのが確認できたところからも、ほぼここで間違いなさそうです。
休止状態への移行時間を変えてみると、やはり勝手に復帰する時間がそれに合わせて変動する感じです。
そこで電源管理の「次の時間が経過後休止状態にする」で "0 分" を指定して、休止状態への移行を行わないようにしてみたところ、Windows 7 が毎日勝手にスリープ状態から自動復帰してしまうことは無くなりました。
ときどき勝手に復帰している日もありますけど、それはまた別の理由があるのでしょう。
そんな感じで対応方法が見つかって、ようやくこれで安心して Windows 7 をスリープモードで利用することができるようになりました。
引き換えに "休止モード" を利用することはできなくなったので、消費電力を最小限まで抑えることは出来なくなりましたけど、自分の環境では Windows Media Center での予約録画も行う都合、よく考えれば休止モードは使用しない方が適切だったので、この辺りは問題なしです。
他には、スリープ中に停電などで電源が落ちた時に、中断中の状態が失われ、通常起動が必要となるというところも考えられますが、Windows 7 の場合はハイブリッドスリープを利用することができるので、それについても心配することはなさそうです。
ちなみにハイブリッドスリープというのは、スリープ状態への移行と合わせて、休止状態と同じように電源を切ると消える情報をハードディスクに記録しておくことで、スリープ中に電源断が起こった場合でも、休止モードからの復帰と同じ形で Windows を再開できる動作モードです。