Как использовать виртуальные каналы с двумя удаленными приложениями, расположенными на двух разных серверах?
Я сделал 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 расположены на двух разных серверах".
Приведенный выше вариант конфигурации может иметь некоторые плохие последствия, если вы не в этом случае.
Если вы являетесь экспертом в этом вопросе, не стесняйтесь улучшить этот ответ.