LSA 세션이 Windows XP에서 활성화되어 있는지 확인하는 방법
-
18-09-2019 - |
문제
현재 컴퓨터에 로그인 한 사용자 목록을 얻으려고합니다.
Windows 7에서는 lsaenumerateLogonSessions를 호출 한 다음 WTSConnectState와 WTSQuerySessionInformation을 호출 할 수 있습니다.
그러나 XP에서는 각 LSA 세션에는 TS 세션 필드에 대해 0이 있습니다 (원격 데스크탑 세션이 아닌 한)은 항상 WTSCACTIVE의 WTSConnectState가 있으며 이미 기계에서 로그 아웃 한 모든 사람들을 나열하게됩니다. 세션이 원격 데스크탑 세션 인 경우 WTSQUERYSESSIONINFORMATION이 실패합니다.
해결책
나는 믿는다 이 CodeProject 기사 당신이 후에있을 수있는 해결 방법을 사용하고, 모든 실행중인 프로세스를 열거하고, authenticationId (프로세스 토큰의 TokenStatistics)를 LUID의 lsaenumerateLogonSessions 목록에 대해 확인합니다. 이를 통해 오래된 루이드를 걸러 낼 수 있습니다
다른 팁
WMI 클래스를 사용해 보셨습니까? Win32_loggedOnUser
.
나는 생각한다
현재 컴퓨터에 로그인 한 사용자 목록을 얻으려고합니다.
대화식으로 로그인 한 모든 사용자 (즉, 데스크탑 등)를 열거하려고합니다. 따라서 실제 콘솔과 RDP 연결입니다.
따라서 "대화식 로그온"과 "로그온"을 구별해야합니다. LogonUser
부름 받았다. 와 함께 LogonUser
프로세스를 대화식 사용자 세션으로 스폰하거나 배치 프로세스를 시작할 수 있습니다. LSA는 이러한 모든 사용자를 반환합니다.
사용 WTSEnumerateSessions
세션이 필요한 상태인지 확인하십시오.