4

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

[截图注册] http://zbirk.mirk.at/browserreg.png “截图”

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

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

4

5 回答 5

3

WebBrowser 控件肯定尊重这些键。

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

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

于 2012-03-27T20:31:13.860 回答
2

确保您没有在 vshost 中运行

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

于 2012-10-27T06:16:02.450 回答
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);
            }
        }
    }
于 2012-03-28T01:49:31.627 回答
1

我也看不到 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 中进行编辑。

于 2017-03-17T18:36:05.127 回答
0

较旧的帖子和解决方案不再准确。

运行 procmon 并观察 FEATURE_BROWSER_EMULATION 显示实际检查了以下注册表变量。这是为 WINWORD.exe 准备的,但除此之外 - 任君挑选...

HKU\S-1-5-21-[my-sid-paws-off]\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\WINWORD.EXE

HKU\S-1-5-21-[my-sid-paws-off]\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION*

HKLM\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION(默认)

HKLM\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\WINWORD.EXE

HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\WINWORD.EXE

HKLM\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION*

HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION*

于 2022-01-31T14:13:46.220 回答