2012-04-26 6 views

답변

1

LsaGetLogonSessionData은 로그온 세션 ID에서 터미널 서비스 세션 ID를 반환합니다. WTSConnectState를 사용하여 WTSQuerySessionInformation을 호출 해보십시오. 행운과 함께, 결과는 당신이 우려하고있는 두 가지 경우를 차별화 할 것입니다.

NPLogonSession에서 돌아 오기 전에 대답을 알 필요가없는 경우 NPLogonSession에 대한 호출과 관련된 터미널 서비스 세션에 어떤 일이 일어 났는지 확인할 수 있습니다 (예 : WTSRegisterSessionNotification).

사용자가 기존 세션에 연결되어 있으면 NPLogonNotify의 터미널 서비스 세션이 유휴 상태 또는 수신 대기 상태로 돌아갈 것이라고 생각합니다. 또한 NPLogonNotify에 대한 호출의 로그온 세션이 닫힙니다. LsaEnumerateLogonSessions을 호출하여 로그온 세션을 열거 할 수 있습니다.

사용자가 새 세션을 받으면 NPLogonNotify의 호출에서 동일한 터미널 서비스 세션이 사용되므로 활성 상태로 전환됩니다. 일반적으로 NPLogonNotify에 대한 호출의 로그온 세션 ID와 관련된 하나 이상의 프로세스가 시작됩니다. MSDN 용어집의 "logon identifier"에 설명 된대로 TokenStatistics 쿼리 클래스와 함께 GetTokenInformation을 사용하여 프로세스와 연결된 로그온 세션을 확인할 수 있습니다.

사용자가 관리자이고 UAC를 사용하는 경우 NPLogonNotify에 대한 호출이 두 개 있습니다. 하나는 제한된 사용자 토큰과 관련된 것이고 다른 하나는 높은 사용자 토큰과 관련된 것입니다. 이것은 로컬 로그온과 원격 로그온 모두에 해당됩니다.

관련 문제