【问题标题】:Webbrowser control ignores FEATURE_BROWSER_EMULATION reg entryWebbrowser 控件忽略 FEATURE_BROWSER_EMULATION reg 条目
【发布时间】:2012-03-27 13:05:10
【问题描述】:

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

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

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

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

【问题讨论】:

  • 在调试器中运行 VS2010 x64 时,始终会出现此问题。但是,在发布应用并运行 .exe 后,您描述的注册表设置会正常生效。
  • 8001, 9001 可以工作,因为它不依赖于 DocTypes

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


【解决方案1】:

WebBrowser 控件肯定尊重这些键。

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

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

【讨论】:

    【解决方案2】:

    确保你没有在 vshost 中运行

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

    【讨论】:

      【解决方案3】:

      感谢您的回复,现在可以使用了。

      她是我的工作和平代码:

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

      【讨论】:

      • 如果你解决了它,你应该接受一些答案。你解决了吗?
      • 我想知道您最初是否使用 regedit 编辑注册表的 64 位视图。当您切换到以编程方式设置密钥时,它起作用了,因为您的程序正在编辑注册表的 32 位视图。
      【解决方案4】:

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

      【讨论】:

      • 每个人都在谈论 vhost 这就是我要找的东西,谢谢。
      【解决方案5】:

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

      运行 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*

      【讨论】:

        猜你喜欢
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-28
        • 2011-07-14
        • 1970-01-01
        • 1970-01-01
        • 2019-12-17
        相关资源
        最近更新 更多