Forçar o WebBrowser Control a usar IEX(7,8 ou 9)

Desenvolvi um aplicativo que possui um navegador integrado com webbrowser control que insistia em renderizar as páginas como IE7. O IE instalado na máquina, estava renderizando normalmente como IE8 sem estar usando o modo de compatibilidade. Pesquisando com um amigo aqui do trampo, descobrimos que o webcontrol rendereza por padrão como IE7 e precisamos modificar o registro do windows para força-lo a usar o IE8 ou IE9 se for o caso.

Para, tal .. abra o regedit e localize a chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION e adicione um valor DWORD com o nome do seu aplicativo, browser.exe por exemplo e coloque o valor 7000 em decimal para rodar como IE7, 8000 para rodar como IE8 e 9000 para rodar como IE9.

Existem outros modos de compatibilidade, veja aqui o material oficial da Microsoft.

Abrasss

IEOptLib – Internet Explorer Options Library

Fala meu povo!! Criei uma lib em C# para manipular as opções de internet do Windows. É possível modificar as zonas de segurança ou criar um nível personalizado. É bem útil para utilizar em conjunto com o componente WebBrowser (System.Windows.Forms.WebBrowser).

Basicamente a classe modifica as chaves do registro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\[0-4], onde [0-4] é zona que deseja modificar.

  • 0 – Meu computador
  • 1 – Intranet local
  • 2 – Sites confiáveis
  • 3 – Internet
  • 4 – Sites restritos

Seguindo a regra acima, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3 representa as opções da zona de internet. Cada valor DWORD dentro dessa chave, representa um item das opções de internet.

Usar a lib é muito fácil, basta fazer a chamada ao método estático que representa a função que você deseja modificar e passar a zona e o novo valor que será atribuído.

InternetOptions.SetSecurityLevel(InternetOptions.INTERNET, InternetOptions.MEDIUM_LOW_LEVEL);

O exemplo acima altera o nível de segurança da zona de internet para médio-baixo.

Como a maioria das opções requer que o Internet Explorer seja reiniciado, é uma boa prática chamar o método antes de renderizar o componente WebBrowser (se esse for o seu foco). faça as chamadas na classe Program, antes de inicializar o Main Form.

O projeto encontra-se no source forge (http://sourceforge.net/projects/ieoptlib/) e é GPL.
Usei como referência um artigo da Microsoft (http://support.microsoft.com/kb/182569/pt-br) que explica muito bem como funciona a gestão das opções de internet.

Espero ter ajudado
Abrassss