Web浏览器组件是IE7而不是IE8?怎么改变这个?

时间:2009-11-23 23:52:56

标签: c# winforms internet-explorer-8 internet-explorer-7 webbrowser-control

所以我有一个使用Web浏览器组件的C#Form应用程序。显然是Response.Write(Request.Browser.Version.ToString());当我从Web浏览器组件访问我的测试页时返回“7.0”。

如何使此Web浏览器组件使用IE8?

4 个答案:

答案 0 :(得分:33)

根据这篇文章,你似乎需要摆弄注册表: -

http://blogs.msdn.com/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx

要在IE8标准模式下运行WebBrowser控件,请在注册表中使用以下新值:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 8000 (Hex: 0x1F40)

要在IE7标准模式下运行,请使用以下注册表值:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 7000 (Hex: 0x1B58)

对于IE8 RTM,我们添加了一个新的“强制”IE8标准模式值。当应用程序选择进入此模式时,Web浏览器控件将严格使用IE8 User-Agent字符串和浏览器仿真模式。它还会在加载页面时忽略回退功能,例如内置兼容性视图列表和用户生成的兼容性视图列表。要在“强制”IE8标准模式下运行,请使用以下注册表值:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 8888 (Hex: 0x22B8)

在所有这些示例中,“MyApplication.exe”指的是您的应用程序的名称。

答案 1 :(得分:27)

答案可能会迟到,可能不适用于您的情况,但根据Ron对问题WPF .net4 webBrowser and Internet Explorer 8的回答,如果您可以控制所提供的页面,您还可以控制网络浏览器:

<meta http-equiv="X-UA-Compatible" content="IE=edge"/>

虽然这显然不会改变用户代理,但似乎像

这样的条件
<!--[if lt IE 8]>
正在正确评估

和CSS border-radius,表明尽管用户代理报告了MSIE 7.0,但实际上仍在使用最新的引擎(我系统上的IE 9)。

答案 2 :(得分:16)

我确实遵循了这一点,直到我意识到这是因为我在视觉工作室进行调试才开始工作。

除了为应用程序设置注册表之外:

Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", 
  System.AppDomain.CurrentDomain.FriendlyName, value);

您还应该为调试(visual studio hosted)应用程序设置它:

Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",
  System.AppDomain.CurrentDomain.FriendlyName.Replace(".exe",".vshost.exe"), value);

答案 3 :(得分:0)

您也应该在调试时更改系统的注册表。

public void ChangeRegistery()
{
        string key = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";
        var value = 0x22B8;

        Microsoft.Win32.Registry.SetValue(key, System.AppDomain.CurrentDomain.FriendlyName, value,Microsoft.Win32.RegistryValueKind.DWord);
        #if DEBUG 
            Microsoft.Win32.Registry.SetValue(key, System.AppDomain.CurrentDomain.FriendlyName.Replace(".exe", ".vshost.exe"), value, Microsoft.Win32.RegistryValueKind.DWord);
        #endif
}