Следующее работает, если вы хотите знать о ВАШЕМ приложении, которое выполняется в ВАШЕМ сеансе:
BOOL IsRemoteSession(void)
{
return GetSystemMetrics( SM_REMOTESESSION );
}
Но не для любого идентификатора процесса.
Если вы хотите узнать о любом произвольном процессе, который может выполняться в любом произвольном сеансе, то вы можете использовать следующий метод.
Сначала можно преобразовать идентификатор процесса в идентификатор сеанса, вызвав ProcessIdToSessionId . Когда у вас есть идентификатор сессии, вы можете использовать его для вызова: WTSQuerySessionInformation . Вы можете указать WTSInfoClass
в качестве значения WTSIsRemoteSession
, и это даст вам информацию о том, является ли это приложение подключением к удаленному рабочему столу или нет.
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);
}