我已经为此搜索了 MSDN 论坛,但似乎每个人(我认为)都建议恢复到 RDP 7.x(卸载 MS 更新 KB2592687)。
我有一个用 C#/WPF 编写的自定义远程桌面客户端,远程桌面 ActiveX 控件托管在 WindowsFormsHost 控件中。该应用程序在更新 RDP 8.0(MS 更新 KB2592687)之前运行良好。如果我卸载 MS 更新(恢复到 RDP 7.1),该应用程序可以工作。
我的 RDP 客户端用于连接到 Virtualbox VRDP(Virtualbox 4.2.x),无需身份验证(Null)。安装 RDP 8.0 后,Windows 远程桌面客户端 (mstsc.exe) 连接良好,响应速度更好(RDP 8.0 增强);但我的自定义 RD 客户端无法连接。
经过进一步调查,我的自定义 RDP 客户端没有引发任何异常或触发OnConnecting和OnLogonError或大多数其他事件。奇怪的是,它只会触发这两个事件(按顺序)
OnAuthenticationWarningDisplayed
OnAuthenticationWarningDismissed
我还使用 RawCap(http://www.netresec.com/?page=RawCap)进行了测试,以查看我的自定义 RDP 客户端是否在这些事件之前将数据包发送到 Virtualbox VRDP。令人惊讶的是,它甚至没有发送数据包。(MS RD 客户端 - mstsc.exe 工作正常。)
所以归结为我的自定义 RDP 客户端上的这些事件/方法调用,不幸的是我被卡住了。
(为简洁起见,代码被缩短)
AxMSTSCLib.AxMsRdpClient8 rdp = new AxMSTSCLib.AxMsRdpClient8();
rdp.OnAuthenticationWarningDisplayed+=new EventHandler(rdp_OnAuthenticationWarningDisplayed);
rdp.OnAuthenticationWarningDismissed+=new EventHandler(rdp_OnAuthenticationWarningDismissed);
rdp.Server = server;
rdp.AdvancedSettings8.RDPPort = 5050;
//No username/password since Virtualbox RDP authentication is set to *null*
//MS RD Client connects just fine to Virtualbox RDP without username/password
try
{
rdp.Connect();
}
catch (Exception ex)
{
}
在OnAuthenticationWarningDisplayed和OnAuthenticationWarningDismissed上放置断点确认两个事件都在Connect()方法之后触发。我怀疑 ActiveX 控件在调用Connect()方法后试图显示一个对话框(??);但我似乎无法弄清楚。
有没有其他人使用 RDP 8.0 完成了一些自定义客户端?让它工作的先决条件是什么(代码)。
非常感谢!将不胜感激。