문제

현재 컴퓨터에 로그인 한 사용자 목록을 얻으려고합니다.

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 세션이 필요한 상태인지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top