.NET WebBrowser控件是否可以使用IE9?

时间:2010-07-27 17:02:40

标签: c# .net internet-explorer com

我意识到这是一个早期发布并且不稳定。我不会梦想在任何其他项目中换掉IE9的默认webbrowser控件,但在这种情况下我特别需要IE9与其他版本进行比较。

我想让.NET WebBrowser控件使用IE9而不是机器上的默认IE版本。我可以完全控制机器,因此破解系统文件或其他可能需要的东西都没有问题。

通常,这可以通过将更新安装到IE来实现,但在IE9的情况下,它会安装一个单独的应用程序,使IE的当前版本保持不变。这意味着WebBrowser控件继续使用当前版本(这很有意义并且是MS的智能举措,因为IE9仍处于开发阶段)。但在我的(边缘)情况下,我需要WebBrowser控件来使用IE9。

是否可以在.NET表单应用程序中嵌入IE9?

修改

Hans Passant's help我进一步了解。在IE9的prog文件目录中发生了一些非常有趣的事情。有一个名为“iepreview.exe.local”的目录,当删除时,会使IE9预览应用程序使用IE8(使用acid3测试检查)。

不是我想要的,但我想知道这是否是我可以根据我的需要进行的某种重定向。

编辑2

我已经尝试将.local hack应用于我的iexplore.exe和我的.NET应用程序副本,我注意到其他有趣的东西 - 两个应用程序都开始使用 IE7 而不是IE8(我的IE版本)或IE9。

这可能是iexplore试图使用IE9然后再回到IE7?看起来奇怪的是它甚至可以使用IE7,但这是它开始使用的useragent字符串。

3 个答案:

答案 0 :(得分:12)

实际上,您可以修改注册表以强制程序使用IE9呈现。转到HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION并添加一个名为程序名称(带.exe)且十进制值设置为9999的新DWORD值。


您还可以修改注册表以强制程序使用IE9 GPU渲染。转到HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_GPU_RENDERING并添加一个名为程序名称(带.exe)且十六进制值设置为1的新DWORD值。


如果您实际上有IE9,这只能工作!您必须首先下载IE9,然后才能执行此操作,否则将无效。 如果要使用IE8渲染页面,只需将9999更改为8888。

注意: GPU渲染仅适用于IE9

答案 1 :(得分:3)

IE9可以并排安装的唯一方法是它为接口和coclasses使用新的GUID。这意味着您无法使用WebBrowser,它具有硬编码的GUID。

还有一个选项,使用AxHost包装器。右键单击工具箱,选择Items,选择COM Components选项卡,然后在列表中找到IE9。不知道它叫什么,旧名称是“Microsoft Web Browser”,由c:\ windows \ system32 \ ieframe.dll提供服务

如果没有友好的WebBrowser和HtmlDocument包装类,你将不得不这样做。

答案 2 :(得分:2)

经过大量的Google-ing后,我发现32位和64位应用程序的 FEATURE_BROWSER_EMULATION 有两组不同的密钥。您需要根据您运行的机器将您的设置放在正确的位置。此外,您需要确保安装要模拟的正确版本的浏览器。

32位:

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

Value Key: (DWORD) yourapplication.exe

64位:

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

Value Key: (DWORD) yourapplication.exe 

将此键设置为的值(取自此处的MSDN)为十进制值:

9999(0x270F) Internet Explorer 9.无论使用何种!DOCTYPE指令,网页都以IE9标准模式显示。

9000(0x2328) Internet Explorer 9.包含基于标准的网页页面!DOCTYPE指令以IE9模式显示。

8888(0x22B8) 无论使用!DOCTYPE指令,网页都以IE8标准模式显示。

8000(0x1F40) 包含基于标准的网页页面!DOCTYPE指令以IE8模式显示。

7000(0x1B58) 包含基于标准的网页!DOCTYPE指令以IE7标准模式显示。