我做了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作为客户端重现的问题。
答案 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;。
如果您不是这种情况,上面的配置选项可能会产生一些不良后果。
如果您是该问题的专家,请随时改进此答案。