如何确定Windows用户是否可以使用休眠模式(使用C ++)

ahm*_*md0 5 c++ winapi power-state

我知道可以调用以下API来休眠系统:

SetSuspendState(TRUE, FALSE, FALSE);

但是,有什么方法可以找出当前Windows用户是否可以使用“真正的”休眠模式?

这就是我的意思:

  1. 如果管理员致电:

    powercfg.exe /hibernate off
    
    Run Code Online (Sandbox Code Playgroud)

    上面的API将使系统进入睡眠模式。那么,您如何(从C ++程序)知道这将发生而不是休眠呢?

  2. 我不确定是否存在可以禁止用户使连接到Active Directory的计算机休眠的组策略?

编辑我知道(过时的)IsPwrHibernateAllowedAPI。我发现它不起作用:即使powercfg.exe /hibernate off被调用,它仍然返回相同的结果。我在那里做错了吗?有人可以解释为什么IsPwrHibernateAllowed对我不起作用吗?

Vio*_*ffe 4

看一下SYSTEM_POWER_CAPABILITIES可以使用CallNtPowerInformation获取的结构。具体看HiberFilePresent领域。