Как отключить окно «Предупреждение системы безопасности» в элементе управления веб-браузера - PullRequest
9 голосов
/ 07 октября 2008

Я использую элемент управления Webbrowser для входа на сайт HTTPS с «недоверенным сертификатом». но я получаю всплывающее окно стандартного "Security Alert" о недоверенном сертификате:

Security Alert window

Я должен найти это окно по заголовку и отправить его Alt + Y , чтобы нажать Да :

int iHandle = NativeWin32.FindWindow(null, "Security Alert");
NativeWin32.SetForegroundWindow(iHandle);
System.Windows.Forms.SendKeys.Send("Y%");

но пользователь может видеть мерцание этого окна.

Как я могу игнорировать это предупреждение?
Или отключите эту проверку «недоверенного сертификата» в элементе управления Webbrowser?

Ответы [ 6 ]

6 голосов
/ 24 ноября 2008

Хорошо, статья о проекте - см. http://www.codeproject.com/KB/shell/WebBrowserControlDialogs.aspx Надеюсь, это поможет.

3 голосов
/ 07 октября 2008

Это должно сделать это:

public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    return true;
}

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

Очевидно, что слепое разрешение сертификатов является угрозой безопасности. Будьте осторожны.

1 голос
/ 12 февраля 2016

Здесь мы идем с решением: Я запускаю его по событию Browser_Navigated, так как базовый компонент activeX до этого момента равен нулю.

Ref: https://social.msdn.microsoft.com/Forums/vstudio/en-US/4f686de1-8884-4a8d-8ec5-ae4eff8ce6db/new-wpf-webbrowser-how-do-i-suppress-script-errors?forum=wpf

         private void Browser_Navigating_1(object sender, NavigatingCancelEventArgs e)
        {
        HideScriptErrors(Browser,true);

        }

    public void HideScriptErrors(WebBrowser wb, bool Hide)
    {

        FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
        if (fiComWebBrowser == null) return;
        object objComWebBrowser = fiComWebBrowser.GetValue(wb);

        if (objComWebBrowser == null) return;

        objComWebBrowser.GetType().InvokeMember(
        "Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { Hide });

    }
1 голос
/ 28 июня 2012

Если сертификат не от доверенного сертифицирующего органа (первая точка в приглашении), вы можете установить сертификат под доверенными корневыми центрами сертификации на соответствующих компьютерах.

Вы можете сделать это в разделе Просмотр сертификата.

В некоторых случаях это может быть более простым решением, поскольку оно не требует никаких изменений кода, которые принимают все сертификаты. Однако для этого требуется, чтобы сертификат устанавливался везде, где используется приложение.

0 голосов
/ 01 ноября 2012

Когда для свойства WebBrowser.ScriptErrorsSuppressed установлено значение false, я больше не получаю эти всплывающие окна

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...