セキュリティアラートを無効にする方法” Webbrowserコントロールのウィンドウ
-
05-07-2019 - |
質問
「信頼されていない証明書」を使用して、Webbrowserコントロールを使用してHTTPSサイトにログインしています。 しかし、このような標準的なウィンドウ" Security Alert"がポップアップ表示されます。信頼できない証明書について:
このウィンドウをタイトルで見つけて、 Alt + Y を送信して Yes を押す必要があります:
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の信頼されたルート証明機関の下に証明書をインストールできます。
「証明書の表示」でこれを実行できます。
何らかの方法で、これは、すべての証明書を受け入れるコード変更を必要としないため、より簡単なソリューションになる可能性があります。ただし、アプリケーションを使用する場所には必ず証明書をインストールする必要があります。
ここでは、ソリューションに進みます。 基礎となるactiveXコンポーネントはそれまでnullなので、Browser_Navigatedイベントで実行します。
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に設定すると、これらのポップアップは表示されなくなりました