다음 작품을 당신이 당신의 응용 프로그램에 대해 알고 싶은 경우에 어떤 세션에서 실행되는 :
BOOL IsRemoteSession(void)
{
return GetSystemMetrics(SM_REMOTESESSION);
}
그러나 일반적으로 모든 프로세스 ID에는 해당되지 않습니다.
임의의 세션에서 실행될 수있는 임의의 프로세스에 대해 알고 싶다면 아래 방법을 사용할 수 있습니다.
먼저 ProcessIdToSessionId을 호출하여 프로세스 ID를 세션 ID로 변환 할 수 있습니다. 세션 ID를 받으면 WTSQuerySessionInformation으로 전화를 걸 수 있습니다. 값이 WTSIsRemoteSession
인 WTSInfoClass
을 지정할 수 있으며이 경우 응용 프로그램이 원격 데스크톱 연결인지 여부에 대한 정보를 제공합니다.
BOOL IsRemoteSession(DWORD sessionID)
{
//In case WTSIsRemoteSession is not defined for you it is value 29
return WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, sessionID, WTSIsRemoteSession, NULL, NULL);
}
프로세스가 다른 세션에있을 수있는 상황은 무엇입니까? 내가 서비스에 대해 물어 보거나 다른 로그인 된 사용자로 실행중인 경우이게 있습니까? –
/console 스위치를 사용하지 않고 로컬 컴퓨터 또는 RDP를 통해 새 로그인을하면 새 세션이 만들어집니다. 새 세션이 만들어지면 생성 된 모든 프로세스가 기본적으로 해당 세션에서 시작됩니다. Win32 API CreateProcessAsUser를 통해 프로세스를 만들 때 세션을 대상으로 지정할 수도 있습니다. –