我正在处理一个项目,应用程序需要自动连接到一个移除桌面(RDP协议)。为此,我使用来自德尔福的库MSTSCLib_TLB,该库使用mstscax.dll。问题是,Windows标识来自ActiveX控件的连接,并显示此警告:
此警告使服务器上的自动连接变得困难。
注意:“一个网站试图启动一个远程连接”,而我正在从一个可执行文件.我在互联网上读到了这条消息,并在Windows注册表上尝试了一些解决方案,但都没有解决问题。我接受在Windows注册表上工作的解决方案以停止显示此警告,,但我更喜欢以编程方式解决方案。我看到了使用ActiveX对IObjectSafety对象进行签名并将SetInterfaceSafetyOptions设置为"INTERFACESAFE_FOR_UNTRUSTED_CALLER“的建议,但我不知道这意味着什么以及如何实现这一点。
我的应用程序是在Delphi上编写的,我是在Windows 10上编写的。
procedure TForm1.Button1Click(Sender: TObject);
var
Client: TMsRdpClient9;
begin
Client:= TMsRdpClient9.Create(Self);
Client.Parent:= Self; //dont know why, but this ActiveX control needs a parent
Client.Server:= Edit1.Text;
Client.UserName:= Edit2.Text;
Client.AdvancedSettings9.ClearTextPassword:= Edit3.Text;
Client.OnLoginComplete:= LoginComplete;
Client.Connect;
end;
发布于 2015-11-13 13:00:42
明白了。我没有使用"TMsRdpClient9“,而是在以下代码中使用了"TMsRdpClientNotSafeForScripting”:
procedure TForm1.Button1Click(Sender: TObject);
var
Client: TMsRdpClientNotSafeForScripting;
begin
Client:= TMsRdpClientNotSafeForScripting.Create(Self);
Client.Parent:= Form1;
Client.Server:= Edit1.Text;
Client.ControlInterface.UserName:= Edit2.Text;
Client.AdvancedSettings2.ClearTextPassword:= Edit3.Text;
Client.Connect;
end;
发布于 2017-11-03 04:38:23
user3810691提供的答案的本质也适用于C# WinForms。在COM Components选项卡(用于选择工具箱项)中:
Microsoft客户端控件-版本10
而不是:
Microsoft RDP客户端控件(可再发行)-版本10
这将给您“不安全的脚本”版本9(原文如此!)控制类型:
AxMSTSCLib.AxMsRdpClient9NotSafeForScripting
https://stackoverflow.com/questions/33692324
复制相似问题