Web浏览器控件将忽略FEATURE_BROWSER_EMULATIONregistry项

我使用.net的Webbrowser控件开发一个定制的浏览器解决scheme。 要禁用IE兼容性视图,我设置registry项Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION:

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

我试图使用的值:dword = 8000,dword = 8888,dword = 9000,但webbrowser控件似乎忽略这些注册条目。

也许有人也有这个问题,可能会帮助我。

WebBrowser控件肯定会尊重这些密钥。

请记住,虽然taskman可能会显示名称列中的application.exe,如果您正在调试exe名称是application.vshost.exe

所以在我的应用程序中,我只是试图在每次运行应用程序时创建密钥。 如果它创建失败(因为它已经存在),那么我继续运行,如果它创建了密钥,那么我通知用户他们需要重新启动应用程序。

确保你没有在vshost中运行

应用程序名称将不同,即appname.vshost.exe

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

我也看不到FEATURE_BROWSER_EMULATION在我的应用程序中有什么不同。

我正在测试FEATURE_BROWSER_EMULATION功能,手动编辑注册表与注册表。 我没有做任何改变。 我的托管页面仍然在任何新的JavaScript的失败,无法加载外部库。

我发现我的错误:

我正在用注册表编辑注册表的64位视图。 我的应用程序是作为一个32位应用程序运行,并查看注册表的32位视图。 这就是为什么我对注册表的更改似乎对我的应用程序没有影响。 顺便说一句,WPF项目模板默认为“更喜欢32位”。

使用Wow6432Node键中的注册表编辑器手动编辑:

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

当然,在应用程序中以编程方式设置DWORD值也是可行的,因为32位应用程序将在Wow6432Node中进行编辑。