2012-03-27 2 views
2

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

[Sreenshot смерзаться] http://zbirk.mirk.at/browserreg.png "Скриншот"

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

Возможно, у кого-то тоже были проблемы, и они могут мне помочь.

+1

Эта проблема возникает последовательно при запуске VS2010 x64 в отладчике. Однако после публикации приложения и запуска .exe параметр реестра, который вы описываете, вступает в силу должным образом. – pgfearo

ответ

3

Контроль WebBrowser определенно ОТНОСИТСЯ К этим ключам.

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

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

1

Thx для вашего ответа, теперь его работа.

Ее мой рабочий мир кода:

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

Если вы решили, вы должны принять какой-то ответ. Вы решили? – Coder12345

+0

Интересно, если вы первоначально редактировали 64-битное представление реестра с помощью regedit.Когда вы переключились на программную настройку ключа, это сработало, потому что ваша программа редактировала 32-битное представление реестра. – Wally

2

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

имя приложения будет отличаться т.е. appname.vshost.exe

0

Я тоже мог не вижу, что FEATURE_BROWSER_EMULATION вносит какое-либо значение в мое приложение.

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

Я нашел ошибку:

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^