1

我正在实施 Windows 解锁程序。我需要知道,目前哪些用户已登录。

我正在尝试使用LsaEnumerateLogonSessions(...)LsaGetLogonSessionData(...)方法来做到这一点。

但结果我不仅收到了登录用户的会话信息,还收到了注销的用户的会话信息。此外,如果用户注销然后登录,则会出现更多用户的会话条目,等等。

看起来,结果不是当前登录会话的列表,而是自上次开机以来存在的所有登录会话的列表。

简短的示例代码:

    LsaEnumerateLogonSessions(sessionCount, &sessionList);
    for(i=0;i<*sessionCount;i++){
        status = LsaGetLogonSessionData(sessionList+i,&sessionData);
        printf("LUID: %I64d \n", sessionData->LogonId);
        wprintf(L"user name: %s\n", sessionData->UserName.Buffer);
    }

有什么解决办法吗?

4

1 回答 1

1

解决方案是调用WTSEnumerateSessions以获取当前会话列表,然后调用WTSQuerySessionInformation每个会话以获取有关会话的扩展信息(例如用户名等)

于 2013-12-02T15:22:36.190 回答