Как использовать виртуальные каналы с двумя удаленными приложениями, расположенными на двух разных серверах?

Я сделал 64-битную C++ Virtual Channel Client DLL

Я обновил свой реестр, используя Регистрация клиента Виртуального канала (я выбрал Default\Addins путь)

Если я запускаю подключение Remote Dekstop, все идет хорошо: моя DLL загружается в процесс с именем mstsc.exeМое вывезено VirtualChannelEntry вызывается обратный вызов, и, пропуская детали, я могу отправлять / получать байты (с небольшой помощью моего собственного процесса, выполняющегося в сеансе сервера и открывающего виртуальный канал).

Я также могу открыть второе подключение удаленного рабочего стола к другому серверу. Второй mstsc.exe процесс запущен, он загружает мою DLL, все ок.

Мои проблемы начинаются, когда я заменяю два своих удаленных рабочих стола двумя "RemoteApps" (один RemoteApp на первом Сервере, другой на втором Сервере).

Когда я запускаю первый RemoteApp, все в порядке (mstsc.exe запускается и загружается моя DLL).

Когда я запускаю второй RemoteApp, нет нового mstsc.exe, так что нет никакой возможности для моей загрузки DLL снова, но существующие mstsc.exe НЕ вызывает мой экспорт VirtualChannelEntry, Я не могу установить виртуальный канал со вторым сервером.

Порядок имеет значение, а не RemoteApps. Только первый запущенный RemoteApp даст виртуальный канал с его сервером.

Если я запускаю только одно RemoteApp, а затем запускаю полное подключение к удаленному рабочему столу с другим сервером, все в порядке: два mstsc.exe загрузка моей DLL, два виртуальных канала установлены.

Вопросы:

Как использовать виртуальные каналы с двумя удаленными приложениями, расположенными на двух разных серверах?

Почему там только один mstsc.exe когда я запускаю два RemoteApps, с двух серверов, и почему этот единственный mstsc.exe не звонит VirtualChannelEntry для второго соединения?

Моя клиентская ОС - Windows 2012. Проблема воспроизводится с Windows 10 Pro в качестве клиента.

1 ответ

Решение

Я получил ответ на Microsoft Technet. Я воспроизвожу это здесь, возможно, помогая будущему читателю.

Добавьте следующую строку в ваши файлы RDP RemoteApps:

disableconnectionsharing:i:1

Тогда будет один случай mstsc.exe для каждого запущенного RemoteApps, и все они будут вызывать ваши экспортированные VirtualChannelEntry Перезвоните.

Осторожно, это ответ на заданный вопрос, в котором говорится, что "два RemoteApps расположены на двух разных серверах".

Приведенный выше вариант конфигурации может иметь некоторые плохие последствия, если вы не в этом случае.

Если вы являетесь экспертом в этом вопросе, не стесняйтесь улучшить этот ответ.

Другие вопросы по тегам