連載
» 2019年08月02日 05時00分 公開

Tech TIPS:【Windows 10】PCが数分で勝手にスリープするのを防ぐ

Windows 10のPCで、スリープまでの時間を長く設定しているにもかかわらず、指定した時間がたっていないのにスリープしてしまうことがある。そのような場合は「システム無人スリープ」の設定を変更することで改善できることがある。

[デジタルアドバンテージ,著]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

対象:Windows 10


Windows 10のPCが勝手にすぐにスリープしてしまうのはなぜ?

 Windows 10のPC(特にノートPC)を使っている場合、システムが勝手にスリープモードに入ってしまって煩わしいと感じたことはないだろうか。

 PCのキーボードやマウスを何も操作せずにしばらく放っておくと、あらかじめ設定された時間が経過したときにスリープモードに移行する。スリープになるまでの時間は、Windows 10なら[Windowsの設定]アプリを起動して、[システム]から[電源とスリープ]の画面を開くと確認できる。

スリープタイムアウトの設定 スリープタイムアウトの設定
[設定]アプリの[電源とスリープ]でスリープまでの時間を設定できる。

 ところが、ここで例えば「30分」に設定していても、スリープから復帰後、2〜3分するとまたすぐにスリープモードに移行しまうことがある。[電源とスリープ]でスリープまでの時間を設定し直しても、数分でスリープモードに入ってしまうのだ。経験的には、以下のような状態になることが多い。

  • 基本的にはWindows 10のノートPCでよく起こる
  • システム起動後、最初のスリープまでの時間は、[Windowsの設定]アプリの画面で設定した通りになっている。だが一度スリープすると、その後はわずか数分でスリープしてしまう

 全てのWindows PCで起こるわけではなく、常にこのようになるわけではないが、一度発生すると、しばらくこの状態が続くようだ。

すぐにスリープするのは「システム無人スリープタイムアウト」設定のせいかも?

 システムがすぐにスリープしてしまうのは、「システム無人スリープタイムアウト(System unattended sleep timeout)」機能が働いているためだと考えられる。これは、システムがWOL(Wake On LAN)や何らかのイベントなどで、自発的にスリープから起動した場合、そのまま何も操作せずに放っておくと、一定時間後にまた自動的にスリープ状態に移行するための機能である。

 このタイムアウト時間はデフォルトでは2分になっているため、スリープから復帰後、何も操作しないと2分程度でまたスリープしてしまう。これがすぐにスリープしてしまうように感じられる原因だ。

 この機能は、Windows Vista以降で実装されたものだが、今まではあまり問題とはならなかった。Windows 10だと勝手に有効になるのか、その理由は不明だが、対策は簡単である。このシステム無人スリープのためのタイムアウト設定時間を長くすればよい。以下、その方法を紹介する。

システム無人スリープのタイムアウト設定項目を有効にする

 システム無人スリープのためのタイムアウト設定時間を設定するには[コントロールパネル]の[電源オプション]で「システム無人スリープタイムアウト」の時間を設定する項目を有効にする必要がある。

 ただし、このシステム無人スリープのタイムアウトを設定する項目は、デフォルトではWindows 10の電源オプションに表示されないようになっている。この項目を有効にするには、powercfgコマンドを実行するか、レジストリを操作する必要がある。

powercfgコマンドでシステム無人スリープのタイムアウト設定項目を有効にする

 システム無人スリープのタイムアウトを設定する項目を有効化するには、コマンドプロンプトで以下のpowercfgコマンドを実行すればよい。再起動などは必要なく、[電源オプション]にタイムアウトを設定する項目が表示される。

powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 -ATTRIB_HIDE


システム無人スリープのタイムアウト設定項目を有効にするpowercfgコマンド

powercfgコマンドでシステム無人スリープのタイムアウト設定項目を有効にする(1) powercfgコマンドでシステム無人スリープのタイムアウト設定項目を有効にする(1)
システム無人スリープのタイムアウト設定項目は、デフォルトでは非表示となっている。
powercfgコマンドでシステム無人スリープのタイムアウト設定項目を有効にする(2) powercfgコマンドでシステム無人スリープのタイムアウト設定項目を有効にする(2)
コマンドプロンプトで上述のpowercfgコマンドを実行する。
powercfgコマンドでシステム無人スリープのタイムアウト設定項目を有効にする(3) powercfgコマンドでシステム無人スリープのタイムアウト設定項目を有効にする(3)
システム無人スリープのタイムアウト設定項目が表示され、時間が延長できるようになる。

 なお、このタイムアウト設定項目を非表示にするには、以下のコマンドを実行すればよい。

powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 +ATTRIB_HIDE


システム無人スリープのタイムアウト設定項目を非表示にするpowercfgコマンド

レジストリ設定を変更してシステム無人スリープのタイムアウト設定項目を有効にする

 powercfgコマンドの実行が面倒ならば、レジストリを変更して、この項目を表示させることもできる。

 レジストリ設定を変更するには、コマンドプロンプトを開くか、[Windows]+[R]キーで[ファイル名を指定して実行]ダイアログを開き、「regedit」と入力して、レジストリエディターを起動する。UAC(ユーザーアクセス制御)の要求許諾画面が表示されるので、指示に従って許可する。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。