我做了64位c++ 虚拟通道客户端DLL
我使用虚拟通道客户端注册更新了注册表(我选择了Default\Addins方式)
如果启动远程Dekstop连接,一切都会进行得很好:我的DLL加载在一个名为mstsc.exe的进程中,调用了导出的VirtualChannelEntry回调,并且在跳过详细信息之后,我能够发送/接收字节(在服务器会话中运行,并打开虚拟通道)。
我还可以打开另一个服务器的第二个远程桌面连接。第二个mstsc.exe进程启动,它加载我的DLL,一切正常。
当我用两个"RemoteApps“(第一个服务器上的一个RemoteApp,第二个服务器上的另一个RemoteApp)替换我的两个远程桌面时,我的问题就开始了。
当我启动第一个RemoteApp时,一切正常(一个mstsc.exe启动,并加载我的mstsc.exe)。
当我启动第二个RemoteApp时,没有新的mstsc.exe,因此无法再次加载DLL,但是现有的mstsc.exe不调用导出的VirtualChannelEntry。我无法与第二个服务器建立虚拟通道。
命令是重要的,而不是RemoteApps。只有第一个启动的RemoteApp将为其服务器提供一个虚拟通道。
如果我只启动一个RemoteApp,然后启动到另一个服务器的完全远程桌面连接,就可以了:两个mstsc.exe加载了我的DLL,两个虚拟通道建立了。
问题:
如何使用两个位于两个不同服务器上的RemoteApps的虚拟通道?
当我从两个服务器启动两个mstsc.exe时,为什么只有一个RemoteApps,为什么单个mstsc.exe不为第二个连接调用VirtualChannelEntry?
我的客户端操作系统是Windows 2012。问题再现Windows 10 Pro作为客户端。
发布于 2016-11-04 08:54:05
我在微软Technet上得到了答案。我在这里复制,也许可以帮助未来的读者。
向您的RemoteApps RDP文件中添加以下行:
disableconnectionsharing:i:1然后,每个启动的mstsc.exe都有一个RemoteApps实例,它们都将调用导出的VirtualChannelEntry回调。
请注意,这是对所提问题的回答,即“两个RemoteApps位于两个不同的服务器上”。
如果不在本例中,上述配置选项可能会产生一些不良后果。
如果你是这方面的专家,你可以自由地改进这个答案。
https://stackoverflow.com/questions/40267582
复制相似问题