簡體   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