繁体   English   中英

Mstsc ActiveX 控件警告

[英]Mstsc ActiveX Control Warning

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

在此处输入图片说明

此警告使服务器上的自动连接变得困难。

注意:“网站正在尝试启动远程连接”,而我正在从可执行文件中执行此操作...我在 Internet 上阅读了有关此消息的信息,并在 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;

知道了。 我没有使用“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 组件选项卡(用于选择工具箱项目)中,选择:

Microsoft RDP 客户端控制 - 版本 10

代替:

Microsoft RDP 客户端控制(可再发行)- 版本 10

这将为您提供“脚本不安全”版本 9(原文如此!)控制类型:

AxMSTSCLib.AxMsRdpClient9NotSafeForScripting

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM