Pergunta

Eu estou usando o controle Webbrowser para acessar site HTTPS com "certificado não confiável". mas fico com a janela tais Standart pop-up "Alerta de segurança" sobre o certificado não confiável:

Janela Alerta de segurança

Eu tenho que encontrar esta janela por título e enviá-lo Alt + Y para pressionar Sim :

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

mas o usuário pode ver uma cintilação desta janela.

Como posso ignorar esse alerta?
Ou desativar esse "certificado não confiável" check in Controlare?

Foi útil?

Solução

Isso deve fazê-lo:

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

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

Obviamente, blindingly permitindo certificados é um risco de segurança. Tenha cuidado.

Outras dicas

Ok, o artigo está em cima do projeto de código - veja http: //www.codeproject. com / KB / shell / WebBrowserControlDialogs.aspx Esperemos que esta ajuda.

Se o certificado não é de um (o primeiro ponto no prompt) de confiança autoridade de certificação, então você pode instalar o certificado sob a Certificação Raiz Confiáveis ??Autoridades dos PCs em questão.

Você pode fazer isso em Ver certificado.

De certa forma isso poderia ser uma solução mais simples, uma vez que não necessita de quaisquer alterações no código que aceitam todas e quaisquer certificados. Contudo, isso exige o certificado a ser instalado onde quer que o aplicativo é usado.

Aqui, nós vamos com a solução: Eu executá-lo no evento Browser_Navigated como o componente ActiveX subjacente é nulo até então.

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

    }

Quando eu definir a propriedade WebBrowser.ScriptErrorsSuppressed como falso, eu não obter esses popups mais

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top