如何将虚拟通道与位于两个不同服务器上的两个RemoteApp一起使用?

时间:2016-10-26 16:28:55

标签: c++ plugins rdp virtual-channel

我做了64位c ++ Virtual Channel Client DLL

我使用Virtual Channel Client Registration更新了我的注册表(我选择了Default\Addins方式)

如果我启动Remote Dekstop连接,一切都很顺利:我的DLL加载到名为mstsc.exe的进程中,我的导出VirtualChannelEntry回调被调用,并且跳过详细信息,我能够发送/ receive bytes(在我自己的进程中提供一些帮助,在服务器会话中运行,并打开虚拟通道)。

我还可以打开与另一台服务器的第二个远程桌面连接。第二个mstsc.exe进程启动,它加载我的DLL,一切正常。

当我用两个“RemoteApps”(第一台服务器上的一台RemoteApp,第二台服务器上的另一台)替换我的两台远程桌面时,我的问题开始了。

当我启动第一个RemoteApp时,一切正常(mstsc.exe启动,并加载我的DLL)。

当我启动第二个RemoteApp时,没有新的mstsc.exe,因此无法再次加载我的DLL,但现有的mstsc.exe不会调用我导出的VirtualChannelEntry。我无法使用第二台服务器建立虚拟通道。

订单确实很重要,而不是RemoteApps。只有第一个 RemoteApp启动才能为虚拟通道提供服务器。

如果我只启动一个 RemoteApp,然后启动与其他服务器的完整远程桌面连接,则一切正常:两个mstsc.exe加载我的DLL ,建立了两个虚拟通道。

问题:

如何将虚拟通道与位于两个不同服务器上的两个RemoteApp一起使用?

当我从两个服务器启动两个RemoteApp时,为什么只有一个mstsc.exe,为什么单个mstsc.exe 为第二个调用VirtualChannelEntry连接?

我的客户端操作系统是Windows 2012。 使用Windows 10 Pro作为客户端重现的问题。

1 个答案:

答案 0 :(得分:0)

我在Microsoft Technet上得到了答案。我在这里重现它,也许可以帮助未来的读者。

将以下行添加到RemoteApps RDP文件中:

mstsc.exe

然后,每个启动的RemoteApp都会有一个VirtualChannelEntry实例,所有这些实例都会调用您导出的<splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.swf" /> <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.swf" /> <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.swf" /> 回调。

请注意,这是对所提问题的回答,其中说明了位于两个不同服务器上的两个RemoteApp&#34;。

如果您不是这种情况,上面的配置选项可能会产生一些不良后果。

如果您是该问题的专家,请随时改进此答案。