Web浏览器控件忽略FEATURE_BROWSER_EMULATION reg条目

时间:2012-03-27 13:05:10

标签: c# windows browser ie8-compatibility-mode regedit

我正在使用.net的Webbrowser控件开发自定义浏览器解决方案。 要禁用IE-Compatibilty视图,我设置了注册表项 Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION:

[Sreenshot regedit] http://zbirk.mirk.at/browserreg.png“截图”

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

也许有人也有这个问题并且可以帮助我。

4 个答案:

答案 0 :(得分:3)

WebBrowser控件肯定会尊重这些键。

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

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

答案 1 :(得分:2)

确保您没有在vshost中运行

应用名称会有所不同,即appname.vshost.exe

答案 2 :(得分:1)

感谢您的回复,现在正在运作。

她是我工作的代码和平:

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

答案 3 :(得分:0)

我也看不出FEATURE_BROWSER_EMULATION在我的申请中有任何不同。

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

我发现了我的错误:

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

使用Wow6432Node键中的regedit进行手动编辑:

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

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