Windows7の不眠症対応

業務で使用していたWindowsXPが4月にサポート終了を迎え、Windows7クリーンインストールして使用しはじめた。しかしそのときからこのWin7がスリープに入ってもすぐに起動してしまうという「不眠症」に悩まされていた。

ネットでこの現象を検索すると多くの方がこれに悩まされている様子。各種Q&Aサイトではとうとう解決にたどり着けないままスレッドが終了している例も多い。

この不眠症現象はいろいろな原因があるようだが、このたび当方で解決に至った方法はまだ報告が上がっていないものだったので、ここに解析過程を含めて書き留めておく。誰かの参考になれば幸い。

人はなぜ眠れないのか (幻冬舎新書)

環境

現象

解析

イベントビューワを起動

[windows]+r で開く窓に "eventvwr" と入力、または C:\Windows\System32\eventvwr.exe をエクスプローラでダブルクリック。

"Power-troubleshooter" のログを探す

左ペインで イベントビューワ → Windowsログ → システム を選択。ログの中から ソースがPower-troubleshooter であるログを探す。

この例では "2014/06/26 14:04:41" のログが該当し、「システムはスリープ状態から再開しました。」とある。

f:id:room661:20140626205332p:plain

スリープを解除したイベントを探す

この例の場合、14:03:43 にスリープに入ったはずなのに 14:04:38 に何らかのイベントが発生し、それを契機にして 14:04:41 の上記 "Power-troubleshooter" が記録されている。

f:id:room661:20140626205331p:plain

怪しいログを発見

14:04:38 から 14:04:41 の間のログメッセージで怪しそうなやつを探す。むう、 TCP/IP NetBIOS Helper サービスは 実行中 状態に移行しました。」 というメッセージが。スリープ中にもかかわらず実行状態に移行したとなればこれがスリープを解除した張本人だろう。

f:id:room661:20140626205333p:plain

原因は "TCP/IP NetBIOS Helper" サービス で間違いなかろう。

とはいえ

職場の環境ではNetBIOS Helperサービスは必須。このサービスを停止するわけにはいかない。

とはいえ NetBIOS Helper が自ずから活性化することなどないはずだ (そういう実装だとするとスリープ機能などありえない)。 NetBIOS Helper を活性化する何らかのトリガーがあるのではなかろうか、と踏む。

もしや

試しに、Ethernetケーブルを抜いた状態で hibernate し(スリープ状態にし)、PCが起きてくるかどうかを確認する。

結果、 5分待っても起きてこない

結論。Ethernetアダプタに入ってくるパケットを "TCP/IP NetBIOS Helper" サービスが拾い、そいつが スリープ状態を解除している。

対応

ネットワークアダプタWake on LAN を許容しているのが原因。当方はWake on LAN 機能など必要ないので、この機能をすべて無効にする。

コントロールパネル → ネットワークアダプタ → (該当デバイス) の右クリックから プロパティ を開き、Wake on LAN のチェックをすべて外す。

f:id:room661:20140626205334p:plain f:id:room661:20140626205335p:plain

完了

めでたく不眠症が解決、よかった。

Windows コマンドプロンプト ポケットリファレンス

Windows コマンドプロンプト ポケットリファレンス