3

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

Я знаю о

powercfg -change disk-timeout-ac xx

а также

powercfg -change disk-timeout-dc xx

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

1 ответ1

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 is Выключить жесткий диск после . Эти ключи имеют подраздел DefaultPowerSchemeValues , который имеет подраздел для каждого стандартного плана электропитания. Эти ключи имеют AcSettingIndex и запись DcSettingIndex которые именно то, что вы думаете. Используемые единицы измерения варьируются от настройки к настройке; этот использует секунды. Итак, вы можете видеть, что время ожидания отключения питания жесткого диска по умолчанию для сбалансированной схемы питания составляет 1200 секунд (20 минут) при подключении и 600 секунд (10 минут) от батареи.

параметры реестра по умолчанию

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

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


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .