9

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

安全警报窗口

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

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

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

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

4

5 回答 5

3

这应该这样做:

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

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

显然,盲目地允许证书是一种安全风险。当心。

于 2008-10-07T14:02:46.457 回答
1

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

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

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

于 2012-06-27T20:18:17.640 回答
1

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

参考:https://social.msdn.microsoft.com/Forums/vstudio/en-US/4f686de1-8884-4a8d-8ec5-ae4eff8ce6db/new-wpf-webbrowser-how-do-i-suppress-script-errors?论坛=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 });

    }
于 2016-02-12T12:45:36.750 回答
0

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

于 2012-11-01T14:16:04.023 回答
-1

我看到了这个解决方案。它对我有用。它非常简单。

于 2015-07-01T11:57:37.080 回答