Как определить, активен ли сеанс LSA в Windows XP
Я пытаюсь получить список пользователей, вошедших в систему на данный момент.
В Windows 7 я могу вызвать LsaEnumerateLogonSessions, затем WTSQuerySessionInformation с помощью WTSConnectState.
Но в XP каждый сеанс LSA имеет 0 для поля сеанса TS (если это не сеанс удаленного рабочего стола), в котором всегда есть WTSConnectState из WTSActive, и в итоге я перечисляю всех людей, которые уже вышли из машины. Сбой WTSQuerySessionInformation, когда сеанс является сеансом удаленного рабочего стола.
3 ответа
Я полагаю, что в этой статье codeproject используется обходной путь, который может оказаться тем, что вам нужно, он перечисляет все запущенные процессы, проверяя AuthenticationId (TokenStatistics в маркере процесса) по списку LsaID LsaEnumerateLogonSessions, который дает вам. Это позволяет вам отфильтровывать устаревшие LUID
Я думаю с
Я пытаюсь получить список пользователей, вошедших в систему на данный момент.
Вы хотите перечислить всех пользователей, которые вошли в систему в интерактивном режиме, то есть имеют рабочий стол и тому подобное. Так что это физическая консоль и RDP-соединения.
Таким образом, вы должны различать "интерактивный вход в систему" и "вход в систему" из-за LogonUser
назывался. С LogonUser
Вы можете запустить процесс в сеанс интерактивного пользователя или запустить пакетный процесс. LSA возвращает всех этих пользователей.
использование WTSEnumerateSessions
и проверьте, находится ли сеанс в нужном вам состоянии.