webbrowser如何在64位环境下调用32位的IE

1.C#的程序是64位生成的,因为某些插件需要用64位打包


2.使用pageoffice因为某些原因必须需要用到32位IE浏览器调用本地32位的office(office版本因为项目原因不能更换)


所以现在的问题是,能不能在64位的环境下调用系统32位IE浏览器,可以的话问题解决

正巧我遇到过这样的场景,在业务中需要用到下面的方式来加载 32 位的 IE。下面我描述下我的调用方法,供参考。

1.首先设置生成 -> 平台 选择 x86
2.定义出 32 位 WebBrowser 版本路径,这个路径可以在注册表中找到(cmd 中运行 regedit)

private const string WebBrowser32 = @"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";//32位 WebBrowser 版本路径
private const string WebBrowser64 = @"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";//64位 WebBrowser 版本路径

3.通过下面的内置方法去查找注册表中的项,如果存在就设置 WebBrowser 的版本号。

var registryKey = Registry.LocalMachine.OpenSubKey(WebBrowser32, true);//找到路径,并指定可以修改版本号

4.释放 registryKey

registryKey.Close();

就这样,我的 WinForm 就能调用到 32 位的 WebBrowser 了。最后附上各版本号的信息以及对应参数:


        10001 (0x2711)  Internet Explorer 10。网页以IE 10的标准模式展现,页面!DOCTYPE无效

        10000 (0x02710) Internet Explorer 10。在IE 10标准模式中按照网页上!DOCTYPE指令来显示网页。Internet Explorer 10 默认值。

        9999 (0x270F)   Windows Internet Explorer 9. 强制IE9显示,忽略!DOCTYPE指令

        9000 (0x2328)   Internet Explorer 9. Internet Explorer 9默认值,在IE9标准模式中按照网页上!DOCTYPE指令来显示网页。

        8888 (0x22B8)   Internet Explorer 8,强制IE8标准模式显示,忽略!DOCTYPE指令

        8000 (0x1F40)   Internet Explorer 8默认设置,在IE8标准模式中按照网页上!DOCTYPE指令展示网页

        7000 (0x1B58)   使用WebBrowser Control控件的应用程序所使用的默认值,在IE7标准模式中按照网页上!DOCTYPE指令来展示网页。

不可以,需要再写一个32bit的程序,和你这个64bit程序采用网络通讯或者管道通讯,让32bit的进程和32bit的IE去交互。

加个中间脚本过渡调用一下吧,简单粗暴