Как узнать, доступна ли гибернация для пользователя Windows (с C ++)

Я знаю, что для перехода системы в спящий режим можно вызвать следующий API:

SetSuspendState (TRUE, FALSE, FALSE) ;

Но есть ли способ узнать, доступна ли «настоящая» гибернация для текущего пользователя Windows?

Вот что я имею в виду:

  1. Если администратор вызывает:

     powercfg.exe / hibernate off
    

    API, указанный выше, переведет систему в спящий режим. Так как же узнать (из программы на C ++), что это произойдет вместо гибернации?

  2. Я не уверен, существует ли групповая политика, которая может запретить пользователю переходить в спящий режим компьютера, подключенного к Active Directory?

Изменить Мне известен (датированный) IsPwrHibernateAllowed API. Я обнаружил, что это не работает: он по-прежнему возвращает тот же результат, даже если был вызван powercfg.exe / hibernate off . Я что-то не так делаю? Может кто-нибудь объяснить, почему IsPwrHibernateAllowed не работает для меня?

5
задан Gorpik 9 February 2015 в 09:47
поделиться