💤

Windows 11でスリープを無効にしても、勝手にスリープに移行する問題の対処

2023/12/19に公開

Windows 11がインストールされたノートPCでJenkinsサーバを立てているのですが、電源設定でスリープを無効にしていても、サインイン後に何も操作せず数分放置すると、勝手にスリープに移行してしまう現象が発生していました。

電源設定によるスリープの無効化に加え、

  • 無人スリープタイムアウト
  • モダンスタンバイ

の二つの機能を無効にすることでこの問題の回避が出来ましたので、同様の現象が起きている方は参考にしてください。

実行環境

  • HP 245 G10
  • Windows 11 Home

手順

無人スリープタイムアウトの無効化

無人スリープタイムアウトは、スリープ解除時にユーザーの操作が一切ない場合、自動的に再度スリープに移行してしまう機能です。電源オプションから設定できますが、この設定は初期状態では隠されているため、レジストリから該当の設定を有効化します。

レジストリの編集

レジストリエディタを起動して、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\7bc4a2f9-d8fc-4469-b07b-33eb785aaca0
のキーを選択します。

右ペインのAttributesをダブルクリックして、値のデータを2にすると、電源オプションにシステム無人スリープタイムアウトの項目が増えます。

電源オプションの設定


設定項目が現れたら、この値を0分に設定することで、システム無人スリープタイムアウトを無効にすることができます。

モダンスタンバイの無効化

モダンスタンバイが有効になっていると、無人スリープタイムアウトを無効にしていても、モダンスタンバイへ遷移してスリープ状態になってしまうことがあります。
しかし、UEFI側に設定項目がない場合、モダンスタンバイ機能のみを直接無効化する方法はありません。
そこで、モダンスタンバイ(S0)をスタンバイモードで上書きし、スタンバイを無効化するという、二段構えの方法でスリープを無効化します。

モダンスタンバイ機能の確認

Windows PowerShellを管理者権限で起動し、以下のコマンドを実行します。

powercfg /a

ここで、

以下のスリープ状態がこのシステムで利用可能です:
スタンバイ(S0 低電力アイドル)

という表示が出ていれば、モダンスタンバイが有効になっています。

レジストリの編集

レジストリエディタを起動して、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power
のキーを右クリックし、新規>DOWORD(32ビット)値を選択します。

ここで、 PlatformAoAcOverride という値を作成し、値のデータを16進数で0に設定します。

設定が完了したら、Windowsを再起動することで、モダンスタンバイを無効にすることができます。

注意点

モダンスタンバイを無効化すると、スタンバイ(S3)が有効な環境では通常のスリープが有効になり、スタンバイ(S3)が無効な環境ではスリープが使用できなくなる代わりに休止状態(S4)が有効になります。

HP 245 G10ではS3に対応していないようで、モダンスタンバイをこの手順で無効にすると、設定画面からスリープの設定項目が消滅しました。

代わりに、電源オプションから休止状態の設定が有効になりました。

この値を0分に設定することで休止状態を無効化し、システムを常時稼働できるようになりました。

S3の対応有無は、モダンスタンバイを無効化した後に再度以下のコマンドを管理者権限のPowerShellで実行することで、確認することができます。

powercfg /a

Discussion