Я реализую процедуру разблокировки 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);
}
Есть ли решения?