我正在使用Webbrowser控件使用“不受信任的证书”登录HTTPS站点。 但我得到一个关于不受信任的证书的弹出窗口“安全警报”:
我必须按标题找到此窗口并发送 Alt + Y 按是:
int iHandle = NativeWin32.FindWindow(null, "Security Alert");
NativeWin32.SetForegroundWindow(iHandle);
System.Windows.Forms.SendKeys.Send("Y%");
但是用户可以看到此窗口的闪烁。
如何忽略此警报?
或者在Webbrowser控件中禁用此“不受信任的证书”检查?
答案 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。
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)