Windows で「ハードディスクの電源をオフにする時間」の値をプログラムで読み取る

Windows で「ハードディスクの電源をオフにする時間」の値をプログラムで読み取る

Windows 7 以降の詳細な電源オプションにある「次の時間が経過後にハード ディスクの電源をオフにする」値の現在の設定をプログラムで読み取る方法を探しています。

私は

powercfg -change disk-timeout-ac xx

そして

powercfg -change disk-timeout-dc xx

この値を設定するコマンドがあります。ただし、現在設定されている値を読み取る同等のコマンドはないようです。また、これに対するレジストリ設定も見つかりませんでした。

答え1

Stack Overflow ではなく Super User で質問しているので、スクリプト可能な (レジストリ) 方法に焦点を当てます。

電源設定はすべて、レジストリの次のキーでアクセスできます。

HKLM\CurrentControlSet\Control\Power

サブキーにはUser\PowerSchemesというエントリがありActivePowerScheme、ご想像のとおり、現在の電源プランの ID が含まれています。電源管理に関連するすべての ID は GUID ですが、簡単に調べたところ、デフォルトの ID はすべてのマシンで同じであることがわかりました。 のサブキーはPowerSchemes、電源スキーム381b4222-f694-41f0-9685-ff5bb260df2eです。たとえば、 はバランス(推奨)

電源オプション

電源設定キーのサブキーは、詳細な電源オプションに表示されるカテゴリです。これらはのサブキーで定義されます。PowerSettingsたとえばPower0012ee47-9041-4b5d-9b77-535fba8b1442ハードディスク上の画像に見られるように、それらの個別の設定です6738e2c4-e8a5-4a42-b16a-e040e769756eハードディスクの電源を切るこれらのキーにはDefaultPowerSchemeValuesサブキーがあり、そのサブキーには標準電源プランごとにサブキーがあります。これらのキーには、まさにあなたが想像するとおりのエントリAcSettingIndexDcSettingIndexエントリがあります。使用される単位は設定によって異なりますが、この設定では秒を使用します。したがって、バランス電源プランのデフォルトのハード ドライブ電源オフ タイムアウトは、電源接続時は 1200 秒 (20 分)、バッテリ駆動時は 600 秒 (10 分) であることがわかります。

レジストリのデフォルト

さて、キーに戻りましょうUser\PowerSchemes。ユーザーが設定を変更したことがない可能性があるため、キーに AC と DC の両方の設定エントリ、設定サブキー、またはカテゴリ サブキーが含まれているという保証はありません。探している値がない場合は、 で現在の電源プランの既定値を確認する必要がありますPowerSettings\DefaultPowerSchemeValues

これらのキーと値は誰でも読み取ることができますが、管理者であっても書き込むことはできないことに注意してください。これは、電源設定がPowerとして実行されるサービスを通じて管理されることになっているためですSYSTEM


コンパイルされた(C++)アプリケーションの開発者は、文書化された電源管理インターフェースを使用する必要があります。GetCurrentPowerPolicies、取得userの一部POWER_POLICY構造を確認し、値を確認しSpindownTimeoutAcますSpindownTimeoutDc

関連情報