我正在实施 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);
}
有什么解决办法吗?