如何在Webbrowser控件中禁用“安全警报”窗口

时间:2008-10-07 13:58:33

标签: c# https browser certificate

我正在使用Webbrowser控件使用“不受信任的证书”登录HTTPS站点。 但我得到一个关于不受信任的证书的弹出窗口“安全警报”:

Security Alert window

我必须按标题找到此窗口并发送 Alt + Y

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

但是用户可以看到此窗口的闪烁。

如何忽略此警报?
或者在Webbrowser控件中禁用此“不受信任的证书”检查?

6 个答案:

答案 0 :(得分:6)

好的,文章是关于代码项目的 - 请参阅http://www.codeproject.com/KB/shell/WebBrowserControlDialogs.aspx 希望这会有所帮助。

答案 1 :(得分:3)

这应该这样做:

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

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

显然,盲目地允许证书存在安全风险。小心。

答案 2 :(得分:1)

如果证书不是来自受信任的认证机构(提示中的第一点),那么您可以在相关PC上的受信任的根证书颁发机构下安装证书。

您可以在“查看证书”下执行此操作。

在某些方面,这可能是一个更简单的解决方案,因为它不需要任何接受任何和所有证书的代码更改。但是,它确实需要在使用应用程序的任何地方安装证书。

答案 3 :(得分:1)

在这里,我们采用解决方案: 我在Browser_Navigated事件上运行它,因为在此之前底层的activeX组件为null。

<强>价: 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 });

    }

答案 4 :(得分:0)

当我将WebBrowser.ScriptErrorsSuppressed属性设置为false时,我不再获得这些弹出窗口

答案 5 :(得分:0)