C # версия предупреждения браузера при использовании карты Google - Windows 7 и Internet Explorer 8 - PullRequest
0 голосов
/ 29 октября 2018

Я использую VS 2013 и веб-браузер C #, но когда я запускаю свой файл .exe в Windows 8 и более ранних версиях (например, Windows 7, с установленным Internet Explorer 8), затем открываю https://maps.google.com на странице написано «Ваш браузер устарел, пожалуйста, обновите его».

Я изменил настройки реестра тремя способами, но не работает.

Первый код и ссылка на него:

Ссылка: Использование последней версии Internet Explorer в элементе управления веб-браузера

   private void SetIE11KeyforWebBrowserControl()
  {
        var appName = Process.GetCurrentProcess().ProcessName + ".exe";
        RegistryKey Regkey = null;
        try
        {
            // For 64 bit machine
            if (Environment.Is64BitOperatingSystem)
                Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@  "SOFTWARE\\Wow6432Node\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_BROWSER_EM  ULATION", true);
            else  //For 32 bit machine
                Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@  "SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EM  ULATION", true);


            // If the path is not correct or
            // if the user haven't priviledges to access the registry
            if (Regkey == null)
            {
                if (Environment.Is64BitOperatingSystem)
                    Regkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey  (@"SOFTWARE\\Wow6432Node\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_BROWSER_EM  ULATION");
                else  //For 32 bit machine
                    Regkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey  (@"SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EM  ULATION");
            }


            string FindAppkey = Convert.ToString(Regkey.GetValue(appName));


            // Check if key is already present
            if (FindAppkey == "11000")
            {
                Regkey.Close();
                //MessageBox.Show("Application set IE Key value");
                return;
            }
            else
            {
                Regkey.SetValue(appName, unchecked((int)0x2AF8), RegistryValueKind.DWord);
            }


            // Check for the key after adding
            FindAppkey = Convert.ToString(Regkey.GetValue(appName));


            if (FindAppkey != "11000")
                throw new Exception("Can not set IE key for web browser");
            else
            {
                Regkey.Close();
                //MessageBox.Show("Application set IE Key value");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Application Settings Failed\n" + ex.Message);
        }
        finally
        {
            // Close the Registry
            if (Regkey != null)
                Regkey.Close();
        }

Второй код:

public class Helper
{
    public static void SetBrowserEmulation(
        string programName, IE browserVersion)
    {
        if (string.IsNullOrEmpty(programName))
        {
            programName = AppDomain.CurrentDomain.FriendlyName;
            RegistryKey regKey = Registry.CurrentUser.OpenSubKey(
                "Software\\Microsoft\\Internet Explorer\\Main" +
                "\\FeatureControl\\FEATURE_BROWSER_EMULATION", true);
            if (regKey != null)
            {
                try
                {
                    regKey.SetValue(programName, browserVersion,
                        RegistryValueKind.DWord);
                }
                catch (Exception ex)
                {
                    throw new Exception("Error writing to the registry", ex);
                }
            }
            else
            {
                try
                {
                    regKey = Registry.CurrentUser.OpenSubKey("Software" +
                        "\\Microsoft\\Internet Explorer\\Main" +
                        "\\FeatureControl", true);
                    regKey.CreateSubKey("FEATURE_BROWSER_EMULATION");
                    regKey.SetValue(programName, browserVersion,
                        RegistryValueKind.DWord);
                }
                catch (Exception ex)
                {
                    throw new Exception("Error accessing the registry", ex);
                }
            }
        }
    }
}


public enum IE
{
    IE7 = 7000,
    IE8 = 8000,
    IE8StandardsMode = 8888,
    IE9 = 9000,
    IE9StandardsMode = 9999,
    IE10 = 10000,
    IE10StandardsMode = 10001
}

Третий и ссылка на него: Ссылка: Как получить элемент управления WebBrowser для отображения современного содержимого?

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

"YourApplicationFileName.exe"=dword:00002af9
"YourApplicationFileName.vshost.exe"=dword:00002af9

ОБНОВЛЕНИЕ 1:

Я использую веб-браузер C # по умолчанию (база IE), а http://whatsmybrowser.org говорит: Ваш браузер "Internet Explorer 8 в Windows 7"

ОБНОВЛЕНИЕ 2:

Когда я установил IE 11 в Windows 7, мой файл .exe работал нормально, но я хочу изменить настройки с кодом, а не установкой IE11.

1 Ответ

0 голосов
/ 01 ноября 2018

При чтении ссылки, которую вы указали , важно понимать, что она не предоставляет вам последнюю версию IE (т.е. IE 11) - она ​​предоставляет вам последнюю версию IE установлен на вашем компьютере .

На вашем компьютере установлен IE 8. Поскольку элемент управления веб-браузера C # использует ту же версию IE, что и ваша машина, приложение C # использует IE 8.

К сожалению, Google Maps больше не поддерживает IE 8.

Таким образом, у вас есть три набора опций:

  1. Обновите IE (например, до IE 11) на машине.
  2. Обновите ОС на компьютере (например, до Windows 10) - поскольку это автоматически обновит IE для вас.
  3. Используйте элемент управления (кроме элемента управления веб-браузера), который использует для рендеринга нечто иное, чем IE. Я не знаю ничего хорошего Варианты качества для этого.
...