Mstsc ActiveX控件警告
问题描述:
我正在应用程序需要自动连接到删除桌面(RDP协议)的项目中工作。为此,我使用Delphi中使用mstscax.dll的库MSTSCLib_TLB。 的问题是,在Windows标识的连接从一个ActiveX控件的到来,并显示该警告:Mstsc ActiveX控件警告
此警告使得难以在服务器上自动连接。
注意:“一个网站正在尝试启动远程连接”,而我正在从一个可执行文件执行此操作... 我在互联网上阅读了关于此消息,并尝试了一些Windows注册表的解决方案,但没有他们解决了这个问题。 我接受在Windows注册表上工作的解决方案来停止显示此警告,但我更喜欢以编程方式解决方案。我看到使用IObjectSafety签名ActiveX对象的消息并将SetInterfaceSafetyOptions设置为“INTERFACESAFE_FOR_UNTRUSTED_CALLER”,但我不知道这意味着什么,以及如何实现它。
我的应用程序进行编码德尔福,我在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;
答
明白了。而不是使用“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;
答
由user3810691提供答案的本质也适用于C#的WinForms。 在COM组件选项卡(用于选择工具箱项)去:
微软RDP客户端控件 - 10版
代替:
微软RDP客户端控件(可再发行) - 版本10
这会给你“不安全的脚本”版本9(sic!)控件l型号:
AxMSTSCLib.AxMsRdpClient9NotSafeForScripting