Как узнать, доступен ли спящий режим для пользователя Windows (с C++)
Я знаю, что можно вызвать следующий API для спящего режима системы:
SetSuspendState(TRUE, FALSE, FALSE);
Но есть ли способ узнать, доступна ли "настоящая" гибернация для текущего пользователя Windows?
Вот что я имею в виду:
Если админ звонит:
powercfg.exe /hibernate off
API выше переведет систему в спящий режим. Итак, как вы узнаете (из программы на C++), что это произойдет вместо гибернации?
Я не уверен, существует ли групповая политика, которая может запретить пользователю переходить в спящий режим на компьютере, подключенном к Active Directory?
Изменить Я в курсе (от)
IsPwrHibernateAllowed
API. Я считаю, что это не работает: он по-прежнему возвращает тот же результат, даже еслиpowercfg.exe /hibernate off
назывался. Я что-то там не так делаю? Может кто-нибудь объяснить, почемуIsPwrHibernateAllowed
у меня не работает?
1 ответ
Взгляни на SYSTEM_POWER_CAPABILITIES
структура, которая может быть получена с CallNtPowerInformation. В частности, посмотрите на HiberFilePresent
поле.