كيفية تعطيل "الأمن في حالة تأهب" في نافذة التحكم Webbrowser

StackOverflow https://stackoverflow.com/questions/178578

  •  05-07-2019
  •  | 
  •  

سؤال

أنا باستخدام عنصر التحكم Webbrowser إلى تسجيل الدخول إلى HTTPS الموقع مع "شهادة غير موثوق بها".ولكن يمكنني الحصول على نافذة منبثقة مثل هذه ستاندارت نافذة "استنفار أمني" حول الشهادات غير الموثوق بها:

Security Alert window

يجب أن تجد هذه النافذة من خلال العنوان وإرسالها Alt+Y اضغط نعم:

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. كوم / KB / شل / WebBrowserControlDialogs.aspx نأمل أن يساعد هذا.

وإذا كانت الشهادة ليست من مرجع مصدق موثوق به (النقطة الأولى في موجه) ثم هل يمكن تثبيت الشهادة تحت المصدقة الجذر الموثوق بها على أجهزة الكمبيوتر في السؤال.

ويمكنك القيام بذلك في إطار عرض الشهادة.

في بعض طرق هذا يمكن أن يكون الحل أبسط لأنها لا تتطلب أية تغييرات التعليمات البرمجية التي تقبل أي وجميع الشهادات. ومع ذلك فإنه لا تتطلب شهادة ليتم تثبيتها حيثما يتم استخدام التطبيق.

هنا نذهب مع الحل:أنا تشغيله على Browser_Navigated الحدث الأساسي مكون activeX باطل حتى ذلك الحين.

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 });

    }

عند I تعيين الخاصية WebBrowser.ScriptErrorsSuppressed إلى false، أنا لا أحصل على هذه بالنوافذ بعد الآن

<وأ href = "http://blogs.msdn.com/b/ieinternals/archive/2011/05/04/side-effects-of-setting-the-silent-scripterrorssuppressed-property-for-web- متصفح control.aspx "يختلط =" NOFOLLOW "> أرى هذا العمل solution.it لme.It طريقة سهلة جدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top