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