Программно читать значение "Отключить жесткий диск после" в Windows

Я ищу способ программно прочитать текущую настройку значения "Отключить жесткий диск после", расположенную в дополнительных параметрах питания в Windows 7 и более поздних версиях.

Я знаю о

powercfg -change disk-timeout-ac xx

а также

powercfg -change disk-timeout-dc xx

Команды для установки этого значения. Однако, похоже, что нет эквивалентной команды для чтения текущего установленного значения. Кроме того, я не мог найти параметр реестра для этого.

1 ответ

Решение

Поскольку вы спрашиваете о суперпользователе, а не о переполнении стека, я сосредоточусь на сценариях (реестре).

Все настройки питания доступны в реестре под этим ключом:

HKLM\CurrentControlSet\Control\Power

User\PowerSchemes подраздел имеет запись под названием ActivePowerScheme который - как вы можете догадаться - содержит идентификатор текущего плана электропитания. Все идентификаторы, относящиеся к управлению питанием, являются GUID, но мои быстрые опросы показывают, что идентификаторы по умолчанию одинаковы на всех машинах. Подключи PowerSchemes Есть, ну, схемы власти. 381b4222-f694-41f0-9685-ff5bb260df2e например, Сбалансированный (рекомендуется).

Подразделы ключей схемы электропитания - это категории, которые отображаются в расширенных параметрах электропитания. Они определены в PowerSettings подраздел Power, Например, 0012ee47-9041-4b5d-9b77-535fba8b1442 Жесткий диск, как видно на изображении выше. Подразделами этих являются индивидуальные настройки. 6738e2c4-e8a5-4a42-b16a-e040e769756e Выключите жесткий диск после. Эти ключи имеют DefaultPowerSchemeValues подраздел, который имеет подраздел для каждого стандартного плана электропитания. Эти ключи имеют AcSettingIndex и DcSettingIndex запись, которая именно то, что вы думаете. Используемые единицы измерения варьируются от настройки к настройке; этот использует секунды. Итак, вы можете видеть, что время ожидания отключения питания жесткого диска по умолчанию для сбалансированной схемы питания составляет 1200 секунд (20 минут) при подключении и 600 секунд (10 минут) от батареи.

Теперь вернемся к User\PowerSchemes ключ. Так как пользователь, возможно, никогда не изменял настройки, нет гарантии, что ключ будет иметь записи настройки как переменного, так и постоянного тока, подраздел настройки или даже подраздел категории. Если искомого значения нет, вам нужно проверить значение по умолчанию для текущего плана электропитания обратно в PowerSettings\DefaultPowerSchemeValues,

Обратите внимание, что хотя каждый может прочитать эти ключи и значения, даже администраторы не могут писать. Это потому, что настройки питания должны управляться через Power сервис, который работает как SYSTEM,


Разработчики скомпилированных (C++) приложений должны использовать документированный интерфейс для управления питанием. Вызов GetCurrentPowerPolicies, получить user часть POWER_POLICY структура, и посмотрите на SpindownTimeoutAc а также SpindownTimeoutDc ценности.

Другие вопросы по тегам