Windows7以降の高度な電源オプションにある[ハードディスクをオフにする]値の現在の設定をプログラムで読み取る方法を探しています。
私は知っています
powercfg -change disk-timeout-ac xx
そして
powercfg -change disk-timeout-dc xx
この値を設定するコマンド。ただし、現在設定されている値を読み取るための同等のコマンドはないようです。また、このためのレジストリ設定が見つかりませんでした。
Stack Overflowではなくスーパーユーザーに質問しているので、これを行うためのスクリプト可能な(レジストリ)方法に焦点を当てます。
電源設定はすべて、レジストリの次のキーでアクセスできます。
HKLM\CurrentControlSet\Control\Power
User\PowerSchemes
サブキーには、ActivePowerScheme
というエントリがあります。このエントリには、ご想像のとおり、現在の電源プランのIDが含まれています。電源管理に関連するすべてのIDはGUIDですが、私の簡単な調査によると、デフォルトのIDはすべてのマシンで同じです。 PowerSchemes
のサブキーは、まあ、電源方式です。たとえば、381b4222-f694-41f0-9685-ff5bb260df2e
はバランス(推奨)です。
電源スキームキーのサブキーは、高度な電源オプションに表示されるカテゴリです。これらは、PowerSettings
のPower
サブキーで定義されています。たとえば、上の画像に示すように、0012ee47-9041-4b5d-9b77-535fba8b1442
はハードディスクです。 thoseのサブキーは個々の設定です。 6738e2c4-e8a5-4a42-b16a-e040e769756e
isの後にハードディスクの電源を切ります。これらのキーにはDefaultPowerSchemeValues
サブキーがあり、すべての標準電源プランのサブキーがあります。これらのキーには、まさにあなたが考えているAcSettingIndex
とDcSettingIndex
のエントリがあります。使用される単位は設定ごとに異なります。これは秒を使用します。したがって、バランス電源プランのデフォルトのハードドライブ電源オフタイムアウトは、接続時に1200秒(20分)、バッテリーで600秒(10分)であることがわかります。
ここで、User\PowerSchemes
キーに戻ります。ユーザーが設定を変更したことがない可能性があるため、キーにACとDC設定エントリ、設定サブキー、さらにはカテゴリサブキーの両方が含まれるという保証はありません。探しているものがない場合は、PowerSettings\DefaultPowerSchemeValues
で現在の電源プランのデフォルト値を確認する必要があります。
誰もがこれらのキーと値を読み取ることはできますが、管理者でさえ書き込むことはできないことに注意してください。これは、電力設定がPower
として実行されるSYSTEM
サービスを介して管理されることになっているためです。
コンパイル済み(C++)アプリケーションの開発者は、電源管理に文書化されたインターフェイスを使用する必要があります。 GetCurrentPowerPolicies
を呼び出し、 user
POWER_POLICY
構造体の一部を取得し、 SpindownTimeoutAc
とSpindownTimeoutDc
の値。