Question

J'utilise le contrôle Webbrowser pour me connecter au site HTTPS avec un "certificat non approuvé". mais je reçois une fenêtre contextuelle de ce type, "Alerte de sécurité". sur le certificat non approuvé:

Fenêtre d'alerte de sécurité

Je dois trouver cette fenêtre par titre et l'envoyer Alt + Y pour appuyer sur Oui :

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

mais l'utilisateur peut voir un scintillement de cette fenêtre.

Comment puis-je ignorer cette alerte?
Vous pouvez également désactiver ce "certificat non approuvé". vérifier dans le contrôle Webbrowser?

Était-ce utile?

La solution

Cela devrait le faire:

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

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

De toute évidence, l’autorisation aveuglante de certificats est un risque pour la sécurité. Soyez prudent.

Autres conseils

Ok, l'article est en place sur le projet de code - voir http: //www.codeproject. com / KB / shell / WebBrowserControlDialogs.aspx Espérons que cela aide.

Si le certificat ne provient pas d'une autorité de certification approuvée (le premier point de l'invite), vous pouvez l'installer sous les autorités de certification racines de confiance sur les ordinateurs concernés.

Vous pouvez le faire sous Afficher le certificat.

À certains égards, il pourrait s’agir d’une solution plus simple car elle ne nécessite aucune modification de code qui accepte tous les certificats. Cependant, le certificat doit être installé partout où l'application est utilisée.

Ici, nous allons avec la solution: Je l'exécute sur l'événement Browser_Navigated car le composant ActiveX sous-jacent est nul jusqu'à cette date.

Référence: https://social.msdn.microsoft.com/Forums/vstudio/en-US/4f686de1-8884-4a8d 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 });

    }

Lorsque je affecte la valeur false à la propriété WebBrowser.ScriptErrorsSuppressed, je ne reçois plus ces fenêtres contextuelles

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top