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

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

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

Я знаю о

powercfg -change disk-timeout-ac xx

и

powercfg -change disk-timeout-dc xx

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

решение1

Поскольку вы спрашиваете о Super User, а не о Stack Overflow, я сосредоточусь на скриптовом (реестровом) способе сделать это.

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

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.

Связанный контент