2010-02-05 3 views
4

현재 컴퓨터에 로그인 한 사용자 목록을 가져 오려고합니다.Windows XP에서 LSA 세션이 활성화되어 있는지 확인하는 방법

Windows 7에서는 LsaEnumerateLogonSessions를 호출 한 다음 WTSConnectState를 사용하여 WTSQuerySessionInformation을 호출 할 수 있습니다.

XP에서 각 LSA 세션은 TS 세션 필드에 대해 0을 가지며 (원격 데스크톱 세션이 아닌 경우) 항상 WTSActive의 WTSConnectState가 있으며 컴퓨터에서 로그 아웃 한 모든 사람을 나열합니다 이미. 세션이 원격 데스크톱 세션 인 경우 WTSQuerySessionInformation이 실패합니다.

답변

2

당신이 후에 어떤 수 있습니다, 그것은 LUID의 LsaEnumerateLogonSessions의 목록에 대해 AuthenticationId (프로세스 토큰에 TokenStatistics를) 확인, 실행중인 모든 프로세스를 열거 당신을 제공하는 해결 방법을 사용합니다. 이것은 당신이 오래된 LUID의

2

WMI 클래스를 사용해 보셨습니까? Win32_loggedOnUser? 내가 this codeproject article 생각

+0

이 또한 비활성 세션을 제공합니다. –

1

는 내가 현재 시스템에 로그인 한 사용자의 목록을 얻으려고

으로 생각 필터링 할 수 있습니다.

대화 형으로 로그온 한 모든 사용자 (예 : 데스크톱 등)를 열거하고 싶습니다. 따라서 실제 콘솔과 RDP 연결입니다.

LogonUser이 호출 되었기 때문에 "대화 형으로 로그온"과 "로그온 한"을 구별해야합니다. LogonUser을 사용하면 프로세스를 대화 형 사용자 세션에 생성하거나 배치 프로세스를 시작할 수 있습니다. LSA는 이러한 모든 사용자를 반환합니다.

WTSEnumerateSessions을 사용하고 세션이 필요한 상태에 있는지 확인하십시오.

관련 문제