2015-11-13 8 views
2

Я работаю над проектом, который приложение необходимо подключить к удаленному рабочему столу (RDP Protocol), автоматически. Для этого я использую библиотеку MSTSCLib_TLB, из Delphi, которая использует mstscax.dll. Проблема заключается в том, что Windows, идентифицирует соединение исходит от элемента управления ActiveX, а также отображать это предупреждение:Mstsc ActiveX Control Warning

enter image description here

Это предупреждение затрудняя для автоматического подключения на сервере.

Примечание: «Веб-сайт пытается запустить удаленное соединение», в то время как я делаю это из исполняемого файла ... Я прочитал в Интернете об этом сообщении и попробовал некоторые решения в реестре 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; 

ответ

2

Понял. Вместо того, чтобы использовать «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; 
0

Суть ответа предоставленной user3810691 также работает для C# WinForms. На вкладке Компоненты COM (для выбора элементов панели инструментов) пойти:

РДП Control Client Microsoft - версия 10

вместо:

РДП Control Client Microsoft (распространяемый) - версия 10

Это даст вам «небезопасную для сценариев» версию 9 (sic!) contro л Тип:

AxMSTSCLib.AxMsRdpClient9NotSafeForScripting