c++ - WTS_CONNECTSTATE_CLASS 枚举类

标签 c++ windows winapi usersession

我必须确定用户 session 处于什么状态。即用户是否已登录并处于事件状态,或者用户是否未登录。为此,我使用函数 WTSEnumerateSessions,然后检查从该函数返回的 WTS_SESSION_INFO,它有一个状态成员。

根据在线文档。

WTSActive A user is logged on to the WinStation

WTSDisconnected The WinStation is active but the client is disconnected.

问题是我目前登录到我的系统,但我当前 session 返回的状态是 WTSDisconnected 我期望状态是 WTSActive 是否有任何理由为什么会这样?

下面的代码

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;

谢谢

最佳答案

这没有多大意义。最可能的解释是 currentSession 被分配了 0 值,这是运行服务的非交互式隔离 session 的 session ID。

关于c++ - WTS_CONNECTSTATE_CLASS 枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33916774/

相关文章:

android - 什么时候在 NDK 中调用全局变量的 C++ 析构函数?

c++ - 从 const 成员函数返回 'this' 作为非常量

c++ - 将字符串格式化为日期

c - fread 返回 0 并且无法在 Windows 计算机上打开 db 文件。找不到文件吗?或者是权限?

c - 如何删除 win32 api 中的互斥量和信号量?

c++ - 如何找到库以使用 dlopen 动态加载它们

javascript - 打开没有菜单栏的浏览器窗口(JavaScript?)

python - 我应该如何在 Windows 中设置默认 Python 版本?

将操作系统线程限制在一个 CPU 上会很糟糕吗?

c++ - 在 Windows API 上创建子窗口