Как отключить окно "Security Alert" в элементе управления Webbrowser

Я использую элемент управления 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 ответов


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

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

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

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


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


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

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

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


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

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 });

    }

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