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

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

安全警报窗口

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

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

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

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

这应该这样做:

 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希望这会有所帮助。

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

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

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

在这里,我们使用解决方案:我在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?论坛= 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时,我不再获得这些弹出窗口

我看到这个解决方案。对我有用。这很简单。