web-dev-qa-db-ja.com

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

Windows7以降の高度な電源オプションにある[ハードディスクをオフにする]値の現在の設定をプログラムで読み取る方法を探しています。

私は知っています

powercfg -change disk-timeout-ac xx

そして

powercfg -change disk-timeout-dc xx

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

3
Nassbirne

Stack Overflowではなくスーパーユーザーに質問しているので、これを行うためのスクリプト可能な(レジストリ)方法に焦点を当てます。

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

HKLM\CurrentControlSet\Control\Power

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

power options

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

registry defaults

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

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


コンパイル済み(C++)アプリケーションの開発者は、電源管理に文書化されたインターフェイスを使用する必要があります。 GetCurrentPowerPolicies を呼び出し、 userPOWER_POLICY 構造体の一部を取得し、 SpindownTimeoutAcSpindownTimeoutDcの値。

2
Ben N