Windows — получение информации о текущих сеансах входа в систему (Visual C ++, Win 7)

Я внедряю процедуру разблокировки Windows. Мне нужно знать, какие пользователи вошли в систему на данный момент.

Я пытаюсь сделать это с LsaEnumerateLogonSessions(...) а также LsaGetLogonSessionData(...) методы.

Но в результате я получаю Session Info не только для вошедших в систему пользователей, но и для тех, кто вышел из системы.
Кроме того, если пользователь вышел из системы и затем вошел в систему, появляется еще одна запись сеанса пользователя и т. Д.

Похоже, что результатом является не список текущих сеансов входа в систему, а список всех сеансов входа в систему, существовавших с момента последнего включения питания.

Краткий пример кода:

    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);
}

Есть ли какие-то решения?

1

Решение

Решение состоит в том, чтобы позвонить WTSEnumerateSessions чтобы получить список текущих сеансов, а затем позвоните WTSQuerySessionInformation для каждой сессии, чтобы получить расширенную информацию о сессии (например, имя пользователя и т. д.)

1

Другие решения

Других решений пока нет …