はじめに
今回の記事では、Windowsのタスクスケジューラをスリープ状態で実行する際に必要な「スリープ解除タイマーの許可」が表示されない場合の解決方法を紹介します。
- タスクスケジューラをスリープ状態で実行したい
- 電源オプションの詳細設定に「スリープ解除タイマー」が表示されない
先日タスクスケジューラをスリープ状態で動かす必要があった際、「スリープ解除タイマーの許可」を設定する必要があったのですが、そもそも表示されない問題に引っかかりました。
解決までに調査や検証が必要であったため、今回のような問題を抱えている方の解決になれば幸いです。
タスクスケジューラをスリープ状態で実行するには?
まずは、そもそもタスクスケジューラをスリープ状態で実行するにはどんな設定が必要かを解説します。
自作のプログラムなどを定期的にや時間を指定して実行したいとき、Windowsのタスクスケジューラにプログラムを設定して実行させることで実現が可能です。
このとき、デフォルトの設定ではPCがスリープ状態だと指定の時間になってもプログラムは起動せず、スリープ状態でもプログラムを実行できるような設定が必要になります。
それが、タスク内[条件]タブに表示される、
タスクを実行するためにスリープを解除する
という設定です。
詳細な電源設定の変更が必要
しかし、PCによってはこの設定のみではスリープ状態でもタスクが起動しません。もう一つPCの電源側の設定を行う必要があります。
[コントロールパネル]> [ハードウェアとサウンド] > [電源オプション] > [プラン設定の編集] > [詳細な電源設定の変更]
に表示されるスリープ解除タイマーの許可の設定になります。これをバッテリ駆動と電源に接続を有効にすることでタスクをスリープ状態で実行できるようになります。
[スリープ解除タイマーの許可]が表示されない
ですが、使用しているWindowsのバージョンやメーカーによってはこの「スリープ解除タイマーの許可」が表示されない場合があります。
このような問題は、レジストリの値を変更することで「スリープ解除タイマーの許可」を表示させることができます。
スリープ解除タイマーの許可を表示させる手順
レジストリエディタを開く
Windowsの検索バーに「regedit」と入力し、表示された「レジストリエディタ」を選択して開きます。
対象のレジストリキーに移動
レジストリエディタのアドレスバーに、以下のパスをコピー&ペーストし、Enterキーを押して移動します。
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\BD3B718A-0680-4D9D-8AB2-E1D2B4AC806D
新しいDWORD (32ビット) 値を作成
対象のキーが開かれた状態で、右クリックし、「新規」>「DWORD (32ビット) 値」を選択します。
値の名前を「Attributes」に設定
新しく作成された値の名前を「Attributes」とします。
値を「2」に設定
「Attributes」をダブルクリックし、値のデータに「2」と入力して「OK」をクリックします。
レジストリエディタを閉じる
変更を保存したら、レジストリエディタを閉じます。
システムの再起動
変更がシステムに適用されるように、コンピュータを再起動します。
さいごに
レジストリの編集はシステムに予期せぬ影響を与える可能性があるため、細心の注意を払って実行してください。
事前にバックアップを取っておくことや、別のPCなどで一度検証してから実行することをおすすめします。