0

我制作了一个 64 位 c++虚拟通道客户端 DLL

我使用虚拟通道客户端注册更新了我的注册表(我选择了Default\Addins方式)

mstsc.exe如果我启动 Remote Dekstop连接,一切都会正常:我的 DLL 加载到VirtualChannelEntry名为拥有,在服务器会话中运行,并打开虚拟通道)。

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

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

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

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

顺序很重要,而不是 RemoteApps。只有第一个启动的 RemoteApp 会为其服务器提供一个虚拟通道。

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

问题:

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

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

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

4

1 回答 1

0

我在 Microsoft Technet 上得到了答案。我在这里复制它,也许对未来的读者有帮助。

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

disableconnectionsharing:i:1

然后,每个启动的 RemoteApp 都会有一个实例,mstsc.exe它们都会调用您导出的VirtualChannelEntry回调。

请注意,这是对所提问题的回答,其中指出“两个 RemoteApps 位于两个不同的服务器上”。

如果您不在这种情况下,上述配置选项可能会产生一些不好的后果。

如果您是这方面的专家,请随时改进此答案。

于 2016-11-04T08:54:05.347 回答