Mstsc ActiveX控件警告

3
我正在参与一个应用需要自动连接到远程桌面(RDP协议)的项目。为此,我使用了Delphi的MSTSCLib_TLB库,该库使用mstscax.dll。 问题是Windows识别出连接来自ActiveX控件,并显示以下警告:

enter image description here

这个警告让在服务器上自动连接变得困难。
注意:"一个网站正在尝试启动远程连接",而我是从可执行文件中进行操作的...... 我在互联网上读到了关于此消息的一些信息,并尝试了一些在Windows注册表上的解决方案,但没有一个解决了这个问题。 我接受可以在Windows注册表上工作以停止显示此警告的解决方案,但我更喜欢编程解决方案。我看到有人建议使用IObjectSafety对ActiveX对象进行签名,并将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;
2个回答

3

明白了。我使用以下代码而不是“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;

3
用户3810691提供的答案本质上也适用于C# WinForms。在COM组件选项卡(选择工具箱项目)中,选择以下内容:

Microsoft RDP Client Control - version 10

而不是:

Microsoft RDP Client Control (redistributable) - version 10

这将为您提供“不适用于脚本”的版本9(sic!)控件类型:AxMSTSCLib.AxMsRdpClient9NotSafeForScripting。请注意保留HTML标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接