Il controllo Webbrowser ignora la voce di registrazione FEATURE_BROWSER_EMULATION

Sto sviluppando una soluzione browser personalizzata con il controllo Webbrowser di .net. Per disabilitare IE-Compatibility View, imposto la voce di registro Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION:

[Sreenshot regedit] http://sofit.miximages.com/c%23/browserreg.png “Screenshot”

Ho provato a utilizzare i valori: dword = 8000, dword = 8888, dword = 9000, ma il controllo webbrowser sembra ignorare queste voci di reg.

Forse qualcuno ha avuto anche questo problema e potrebbe aiutarmi.

Il controllo WebBrowser DEFINISCE assolutamente queste chiavi.

Ricorda che mentre taskman può mostrare application.exe nella colonna del nome, se stai eseguendo il debug il nome di exe è application.vshost.exe

Quindi, nella mia applicazione, sto solo tentando di creare la chiave ogni volta che viene eseguita l’app. Se non riesce a crearlo (perché già esiste), continuo a correre, se crea la chiave, informo l’utente che è necessario riavviare l’applicazione.

assicurati di non essere in esecuzione in vshost

il nome dell’app sarebbe diverso, ad esempio appname.vshost.exe

Grazie per la tua risposta, ora funziona.

Lei è la mia pace lavorativa del codice:

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

Anche io non ho potuto vedere che FEATURE_BROWSER_EMULATION ha fatto alcuna differenza nella mia applicazione.

Stavo testando la funzionalità FEATURE_BROWSER_EMULATION modificando manualmente il registro con regedit. Niente di ciò che ho fatto ha fatto alcuna differenza. La mia pagina ospitata non funzionava ancora su JavaScript new-ish e non poteva caricare librerie esterne.

Ho trovato il mio errore:

Stavo modificando la vista a 64 bit del registro con regedit. La mia app funzionava come un’app a 32 bit e guardava la vista a 32 bit del registro. Ecco perché le mie modifiche al registro non sembravano avere alcun impatto sulla mia applicazione. A proposito, il modello di progetto WPF è impostato su “Prefer 32-bit”.

La modifica manuale con regedit all’interno della chiave Wow6432Node ha funzionato:

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

Ovviamente, anche l’impostazione del valore DWORD a livello di codice all’interno dell’applicazione funzionerà, poiché l’applicazione a 32 bit verrà modificata all’interno del Wow6432Node.