Как отключить окно "Security Alert" в элементе управления Webbrowser
Я использую элемент управления Webbrowser для входа на сайт HTTPS с "ненадежным сертификатом". но я получаю всплывающее окно такого стандартного окна "Security Alert" о ненадежном сертификате:
Я должен найти это окно по названию и отправить его 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.
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, я больше не получаю эти всплывающие окна