Элемент управления веб-браузера игнорирует запись FEATURE_BROWSER_EMULATION reg - PullRequest
2 голосов
/ 27 марта 2012

Я занимаюсь разработкой пользовательского решения для браузера с контролем веб-браузера .net.Чтобы отключить IE-Compatibilty View, я установил запись реестра Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION:

[Sreenshot regedit] http://zbirk.mirk.at/browserreg.png "Снимок экрана"

Я пытался использовать значения: dword = 8000, dword = 8888, dword = 9000, но элемент управления веб-браузера, похоже, игнорирует эти записи reg.*

Ответы [ 4 ]

3 голосов
/ 28 марта 2012

Элемент управления WebBrowser определенно уважает эти ключи.

Помните, что хотя Taskman может показывать application.exe в столбце имени, при отладке исполняемый файл называется application.vshost.exe

Так что в моем приложении я просто пытаюсь создать ключ при каждом запуске приложения. Если не удается создать его (поскольку он уже существует), я продолжаю работу, если он создает ключ, то я информирую пользователя о том, что ему необходимо перезапустить приложение.

2 голосов
/ 27 октября 2012

убедитесь, что вы не работаете в vshost

имя приложения будет другим, т.е. appname.vshost.exe

1 голос
/ 28 марта 2012

Спасибо за ваш ответ, теперь он работает.

Она - мой рабочий код:

public void setIEcomp()
    {
        String appname = Process.GetCurrentProcess().ProcessName+".exe";
        RegistryKey RK8 = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION",RegistryKeyPermissionCheck.ReadWriteSubTree);            
        int value9 = 9999;
        int value8 = 8888;
        Version ver = webBrowser1.Version;
        int value = value9;
        try
        {
            string[] parts = ver.ToString().Split('.');
            int vn = 0;
            int.TryParse(parts[0], out vn);
            if (vn != 0)
            {
                if (vn == 9)
                    value = value9;
                else
                    value = value8;
            }
        }
        catch
        {
            value = value9;
        }
        //Setting the key in LocalMachine
        if (RK8 != null)
        {
            try
            {
                RK8.SetValue(appname, value, RegistryValueKind.DWord);
                RK8.Close();
            }
            catch(Exception ex)
            {
                //MessageBox.Show(ex.Message);
            }
        }
    }
0 голосов
/ 17 марта 2017

Я тоже не мог видеть, что FEATURE_BROWSER_EMULATION что-то изменило в моем приложении.

Я тестировал функциональность FEATURE_BROWSER_EMULATION, вручную редактируя реестр с помощью regedit.Ничто из того, что я сделал, не имело никакого значения.Моя размещенная страница все еще не работала на любом новом JavaScript и не могла загрузить внешние библиотеки.

Я обнаружил свою ошибку:

Я редактировал 64-битное представление реестрас regedit.Мое приложение работало как 32-разрядное приложение и просматривало 32-разрядное представление реестра. Вот почему мои изменения в реестре, похоже, не повлияли на мое приложение.Кстати, шаблон проекта WPF по умолчанию «Предпочитает 32-битный».

Ручное редактирование с помощью regedit в ключе Wow6432Node сработало:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION

Конечно, DW *значение в программном обеспечении вашего приложения также будет работать, так как ваше 32-битное приложение будет редактировать в Wow6432Node.

...