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

Windows 10/11のPCでは、スリープまでの時間を長く設定しているにもかかわらず、指定した時間が経過していないのにスリープしてしまうことがある。そのような場合は「システム無人スリープ」の設定を変更することで改善できることがある。ただし、「システム無人スリープ」の設定は、デフォルトでは非表示なので、これを表示させる必要がある。

» 2023年07月14日 05時00分 公開

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

「Tech TIPS」のインデックス

連載目次

対象:Windows 10/11


Windows 10/11が数分で勝手にスリープするのを防ぐには Windows 10/11が数分で勝手にスリープするのを防ぐには
Windows 10/11のPCでは、スリープまでの時間を長く設定しているにもかかわらず、指定した時間が経過していないのにスリープしてしまうことがある。それを解決する方法を紹介しよう。

 Windows 10やWindows 11を搭載したPCを使っていると、システムが勝手にスリープモードに入ってしまうことがある。特にノートPCの場合、この現象が発生しやすいようだ。

 もちろん、Windows 10/11の設定で、PCを何も操作しないと自動的にスリープするようにしていれば、その時間を経過すると、スリープに移行する。しかし、その時間を経過していないのにもかかわらず、スリープしてしまうことがあるのだ。その原因と解決方法を紹介しよう。

Windows 10/11が勝手にすぐにスリープする原因は?

 スリープになるまでの時間は、Windows 10なら[Windowsの設定]アプリを起動して、[システム]から[電源とスリープ]の画面を開くと確認できる。Windows 11なら[設定]アプリの[システム]-[電源]画面の「画面とスリープ」 欄を展開することで確認可能だ。

 ここでは、何も操作せずに放っておくと、画面を「オフ」にする時間とスリープ状態に移行する時間が、電源接続時とバッテリー駆動時(ノートPCなどの場合)のそれぞれで設定できる。

スリープタイムアウトの設定(Windows 10) スリープタイムアウトの設定(Windows 10)
[Windowsの設定]アプリの[システム]−[電源とスリープ]画面でスリープまでの時間を設定できる。

スリープタイムアウトの設定(Windows 11) スリープタイムアウトの設定(Windows 11)
[設定]アプリの[システム]−[電源とバッテリー]画面でスリープまでの時間を設定できる。

 ところが、ここで例えばスリープの設定を「30分」にしていても、スリープから復帰後、2〜3分するとまたすぐにスリープモードに移行しまうことがある。全てのWindows 10/11で発生するわけではないが、一度、この状態になると勝手にスリープするようになってしまうようだ。

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

 このタイムアウト時間がデフォルトで2分になっている。どうも、この機能が通常のスリープに対しても働いてしまい、スリープからの復帰後、何も操作しないで2分程度経過すると、勝手にスリープしてしまうようだ。

 つまり対策は、このシステム無人スリープのためのタイムアウト設定時間を長くすればよい。

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

 システム無人スリープのタイムアウトを設定する項目は、デフォルトでは非表示になっているので、これを有効化する必要がある。

 それには、コマンドプロンプトでpowerconfigコマンドを実行する方法と、レジストを編集する方法がある。ただ、編集部で試したところ、Windows 11のノートPCの場合は、powerconfigコマンドを実行する方法ではタイムアウト設定項目を表示できなかった(Windows 10とWindows 11のデスクトップPCでは表示できた)。Windows 11のノートPCでは、レジストリを編集する方法を試してほしい。

powercfgコマンドを実行してシステム無人スリープタイムアウトを表示にする

 コマンドプロンプト(Windowsターミナル)を起動し、以下のpowercfgコマンドを実行すればよい。再起動などの必要はなく、powercfgコマンドを実行すれば、[コントロールパネル]の[電源オプション]アプレットにタイムアウトを設定する項目が表示される。前述のように、Windows 11のノートPCでは、powercfgコマンドでは、タイムアウトを設定する項目が表示されないこともあるので注意してほしい。

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


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

powercfgコマンドでシステム無人スリープタイムアウトを表示する(1) powercfgコマンドでシステム無人スリープタイムアウトを表示する(1)
タスクバーの検索ボックスに「電源オプション」と入力し、「電源プランの編集」をクリックする。
powercfgコマンドでシステム無人スリープタイムアウトを表示する(2) powercfgコマンドでシステム無人スリープタイムアウトを表示する(2)
[コントロールパネル]の[電源オプション]アプレットの[プラン設定の編集]画面が開く。ここの[詳細な電源設定の変更]をクリックする。
powercfgコマンドでシステム無人スリープタイムアウトを表示する(3) powercfgコマンドでシステム無人スリープタイムアウトを表示する(3)
[電源オプション]ダイアログが開くので、「スリープ」欄を展開する。デフォルトでは、「システム無人スリープタイムアウト」の項目が表示されていない。確認したらダイアログを閉じておく。
powercfgコマンドでシステム無人スリープタイムアウトを表示する(4) powercfgコマンドでシステム無人スリープタイムアウトを表示する(4)
powercfgコマンドを実行して、「システム無人スリープタイムアウト」の表示を有効化する。
powercfgコマンドでシステム無人スリープタイムアウトを表示する(5) powercfgコマンドでシステム無人スリープタイムアウトを表示する(5)
再び[電源オプション]ダイアログを開き、「スリープ」欄を展開すると、今度は「システム無人スリープタイムアウト」が表示される。ここを設定すればよい(後述)。

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

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


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

レジストリ設定を変更してシステム無人スリープタイムアウトを表示にする

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

 レジストリ設定を変更するには、[Windows]+[R]キーで[ファイル名を指定して実行]ダイアログを開き、「regedit」と入力して、レジストリエディターを起動する。

 レジストリエディターを起動したら、以下のレジストリキーを開いて、DWORD型の「Attributes」の値を、デフォルトの「1」から「2」に変更する。再起動などは不要で、レジストリの変更後、[コントロールパネル]の[電源オプション]アプレットに設定が反映される。

[注意]

レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリエディターの操作は慎重に行うとともに、あくまでご自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本編集部では責任を負いかねます。ご了承ください。


項目 内容
キー \HKEY_LOCAL_MACHINEの \SYSTEM
  \CurrentControlSet
   \Control
    \Power
     \PowerSettings
      \238c9fa8-0aad-41ed-83f4-97be242c8f20
       \7bc4a2f9-d8fc-4469-b07b-33eb785aaca0
値の名前 Attributes
REG_DWORD
値の内容 「2」にする(デフォルトは「1」)
システム無人スリープタイムアウトの設定項目を表示させるためのレジストリ設定

レジストリ設定を変更してシステム無人スリープタイムアウトを表示にする レジストリ設定を変更してシステム無人スリープタイムアウトを表示にする
レジストリエディターで上表のレジストリを編集し、値の内容を「2」に変更する。

 あるいは管理者権限でコマンドプロンプト(Windowsターミナル)を起動し、以下のコマンドを実行してもよい。

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\7bc4a2f9-d8fc-4469-b07b-33eb785aaca0" /v Attributes /t REG_DWORD /d 2 /f


システム無人スリープタイムアウトの設定項目を表示させるためのコマンド

 上記のコマンドラインで「/d 2」の部分を「/d 1」にすると、デフォルトに戻り、システム無人スリープのタイムアウト設定項目が非表示になる。

[電源設定オプション]でシステム無人スリープタイムアウトの時間を設定する

 powercfgコマンドを実行するか、レジストリの設定が済んだら、タスクバーの検索ボックスに「電源オプション」と入力し、表示された「電源プランの編集」をクリックする。

 [Windows]+[R]キーを押して、[ファイル名を指定して実行]ダイアログを開き、「powercfg.cpl」と入力し、[Enter]キーを押して、[コントロールパネル]の[電源オプション]を開き、選択している電源プランの[プラン設定の変更]のリンクをクリックしてもよい。

 [プラン設定の変更]画面になったら、[詳細な電源設定の変更]をクリックして、[電源オプション]ダイアログの[詳細設定]画面を開く。

 このダイアログの[スリープ]グループの下にある[システム無人スリープタイムアウト]の値が、勝手にスリープする原因だ。上記のpowercfgコマンドを実行するか、レジストリの設定していないと、この項目が表示されないので注意してほしい。また、設定したのに表示されない場合は、一度、ダイアログが閉じて、再び開くと表示される可能性がある。

 この値は、デフォルトで「2分」になっているが、これを希望するスリープ時間、例えば「30分」や「60分」にすると、無人スリープに入るまでの時間が延長できる。「0」にすると無人スリープすることはなくなるが、無理に無効にしなくても、時間を長くするだけでよいだろう(無効にした場合、自動的にスリープから復帰した後、ずっと起動したままになってしまうようだ)。

システム無人スリープタイムアウトの時間を設定する システム無人スリープタイムアウトの時間を設定する
[電源オプション]ダイアログの「スリープ」欄に表示された「システム無人スリープタイムアウト」をクリックして展開し、デフォルトでは「2分」となっている時間を、「バッテリ駆動」「電源に接続」ともに「60分」程度に変更し、[OK]ボタンをクリックする。

【注意】機能更新プログラムを適用するとタイムアウト値が2分に戻る

 機能更新プログラムを適用すると、この設定がデフォルトに戻ってしまう(システム無人スリープタイムアウトの値が「2分」に戻る)可能性がある。機能更新プログラムを適用した場合は、再度、この値を設定してほしい。

更新履歴

【2023/07/144】Windows 11に対応し、コマンドでレジストリキーを編集する方法を追記しました。

【2019/08/02】powercfgコマンドを使う方法を追記しました。

【2018/03/22】初版公開。


Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

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

メールマガジン登録

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