2008-10-07 7 views
8

Ich verwende die Webbrowser-Steuerung, um mich mit einem "nicht vertrauenswürdigen Zertifikat" an der HTTPS-Site anzumelden. aber ich Popup so standart Fenster „Sicherheitswarnung“ über nicht vertrauenswürdiges Zertifikat:So deaktivieren Sie das Fenster "Sicherheitswarnung" im Webbrowser-Steuerelement

Security Alert window

ich nach Titel dieses Fenster zu finden, und schicken Sie es Alt + Y drücken Ja:

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

aber Benutzer kann ein Flackern dieses Fensters sehen.

Wie kann ich diese Warnung ignorieren?
Oder deaktivieren Sie dieses Kontrollkästchen "nicht vertrauenswürdiges Zertifikat" im Webbrowser-Steuerelement?

+0

möglich Duplikat [WebBrowser control - ignorieren SSL Fehler] (http://stackoverflow.com/questions/6933254/webbrowser-control-ignore-ssl-errors) –

+0

Siehe auch: SSL-Fehler in WebBrowser-Steuerelementen für Konsolen-Apps http://stackoverflow.com/questions/17698002/ignoring-web-browser-ssl-security-alerts-in-console-application/21008529 –

Antwort

4

Dies sollte es tun:

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

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate); 

Offensichtlich blendend Zertifikate erlaubt ist ein Sicherheitsrisiko. Achtung.

+3

Ich konnte das nicht erreichen arbeiten mit dem WebBrowser-Steuerelement. Es kann nur ich sein, aber ich vermute, dass diese Lösung nicht anwendbar ist, da das System.Windows.Forms.WebBrowser-Steuerelement keine Anforderungen über .NET sendet. –

+1

@DanielBallinger Es ist nicht nur du. Ich habe das [gleiche Problem] (http://stackoverflow.com/q/12999735/1357272). – ih8ie8

+0

Dies ist NUR für verwaltete Objekte. Webbrowser-Steuerelement ist ein umgebendes nicht verwaltetes Steuerelement. Deshalb funktioniert das nicht. – Odys

6

Ok, Artikel ist auf Code-Projekt - siehe http://www.codeproject.com/KB/shell/WebBrowserControlDialogs.aspx Hoffentlich hilft dies.

+0

HI @BimJearn, tolle Arbeit. Dies ist eine sehr interessante Möglichkeit, alle Popup-Nachrichten einzufangen.Ein Wort der Warnung: Da Sie den Inhalt des Nachrichtentextes verwenden, um den Typ des Popups zu bestimmen, wird dies nicht funktionieren, wenn Ihre Windows OS-Sprache etwas anderes als Englisch ist. –

+0

Das ist das einzige, was ich gefunden habe, das für mich funktioniert hat. Wie bereits erwähnt, ist es sprachspezifisch, aber es scheint, als könnte die StringConstants-Klasse relativ einfach bearbeitet werden, um andere Sprachen zu berücksichtigen. +1 – smitty1

1

Wenn das Zertifikat nicht von einer vertrauenswürdigen Zertifizierungsstelle stammt (der erste Punkt in der Eingabeaufforderung), können Sie das Zertifikat unter den vertrauenswürdigen Stammzertifizierungsstellen auf den betreffenden PCs installieren.

Sie können dies unter Zertifikat anzeigen.

In mancher Hinsicht könnte dies eine einfachere Lösung sein, da keine Codeänderungen erforderlich sind, die alle Zertifikate akzeptieren. Es erfordert jedoch, dass das Zertifikat überall dort installiert wird, wo die Anwendung verwendet wird.

+0

Sieht aus wie eine großartige Idee, aber ich habe es aus irgendeinem Grund versucht und [es hat nicht für mich funktioniert] (http://stackoverflow.com/q/12999735/1357272). Irgendwelche Ideen warum? – ih8ie8

0

Wenn ich die WebBrowser.ScriptErrorsSuppressed Eigenschaft auf false gesetzt, ich habe nicht diese Pop-ups mehr

+0

Dies wird es verbergen. Es wird nicht auf JA geklickt. – Odys

+0

Sind Sie sich sicher? Mein Code läuft nun seit einigen Monaten ohne Probleme – Adil

+0

Ja, es wird nur versteckt, so dass die Seite im OP-Fall nicht geladen werden kann –

1

Hier gehen wir mit der Lösung: ich es auf dem Browser_Navigated Ereignis als Underlying laufen activeX-Komponente ist bis dahin null.

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

    }