WTS_CONNECTSTATE_CLASS枚举类

时间:2015-11-25 12:39:38

标签: c++ windows winapi usersession

我必须确定用户会话处于什么状态。即,如果用户已登录并处于活动状态,或者用户未登录。要使用函数WTSEnumerateSessions执行此操作,然后我将检查从此函数返回的WTS_SESSION_INFO,该函数具有状态成员。

根据在线文档。

  

WTSActive用户登录到WinStation

     

WTSDisconnected   WinStation处于活动状态,但客户端已断开连接。

问题是我当前登录到我的系统但是我当前会话返回的状态是WTSDisconnected我期待状态为WTSActive是否有任何理由说明为什么会这样?< / p>

以下代码

PWTS_SESSION_INFO pSessionInfo(nullptr);
    DWORD countOfSessions(0);
    DWORD sessionIndex(0);

    if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE,     // local machine
        0,                              // reserved, must be zero
        1,                              // Version, must be one
        &pSessionInfo,
        &countOfSessions) == FALSE)
    {

        return false;
    }

    if (countOfSessions == 0 || !pSessionInfo)
    {
        return false;
    }

    const DWORD currentSession = GetRealSessionID(CurrentSession); //This case we are in session 0
    for (; sessionIndex < countOfSessions; ++sessionIndex)
    {
        WTS_SESSION_INFO& sessionInfo = pSessionInfo[sessionIndex];
        if (currentSession == sessionInfo.SessionId)
        {
            if (sessionInfo.State == WTSActive)
            {
                return true;
            }
        }
    }


    return false;

由于

1 个答案:

答案 0 :(得分:0)

这没有多大意义。最可能的解释是currentSession被赋值为0,这是服务运行的非交互式隔离会话的会话ID。

相关问题