Все IPC могут использоваться в среде TS - вам просто нужно быть умным в наименовании объектов для достижения требуемого конечного результата. Использование сокетов сложнее, но это можно сделать. Я перечислил несколько методов ниже.
Для объектов IPC, которые могут быть названы (Pipe, Event, Mutex, Memory Mapped File и т. Д.), Включающий идентификатор сеанса в имя объекта, достигнет нумерации . Чтобы дополнительно заблокировать объект IPC, используйте атрибуты безопасности объекта, чтобы остановить доступ любого другого пользователя к объекту IPC. Это может произойти случайно в результате ошибки или злонамеренно от другого пользователя на терминальном сервере.
Аналогичным образом используйте идентификатор аутентификации пользователя в имени объекта IPC. В C++ см. MSDN по адресу GetTokenInformation, используйте TokenStatistics для TokenInformationClass. Я уверен, что существует эквивалентный метод .NET. Снова закрепите объект IPC.
Если вы должны использовать сокеты в TS (я лично выбрал бы другой способ связи между приложениями в TS), то используйте номера портов. Выберите номер базового порта и добавьте номер сеанса, чтобы получить порт, используемый для сеанса. Чтобы обеспечить передачу правильных приложений, используйте метод проверки подлинности и/или подтверждение связи перед передачей данных. Теоретически сеансы могут быть пронумерованы до 65535, поэтому вы можете отклеиваться, когда используете номер базового порта, скажем 2000, и сеанс, в течение которого ваше приложение запускается в сеансе 65500. Если вы действительно хотели использовать сокеты, возможно, брокерский сервис поможет.