强制32位Internet Explorer ComObject

时间:2012-06-27 13:02:37

标签: internet-explorer powershell 32bit-64bit comobject

我正在编写一个脚本,应该从Internet Explorer中的链接安装一些软件,不幸的是该网站需要32位Internet Explorer才能工作。有没有办法迫使32位Internet Explorer窗口在64位机器上打开?从32位机器运行时,脚本运行正常。

$ie = New-Object -ComObject InternetExplorer.Application
$ie.Navigate2($url)
$ie.Visible = $true

5 个答案:

答案 0 :(得分:4)

$url = "http://www.google.com"
$shell = New-Object -ComObject WScript.Shell
$shell.Exec("C:\Program Files (x86)\Internet Explorer\iexplore.exe $url") | Out-Null

答案 1 :(得分:1)

一种解决方案是使用powershell.exe文件夹(C:\ windows \ syswow64 \ WindowsPowerShell \ v1.0 \ powershell.exe)下的完整路径显式启动SysWOW64 32位版本并运行脚本

答案 2 :(得分:1)

应该注意的是,MSIE的位级别很大程度上取决于版本。 IE9具有独立的32/64位版本,可以独立执行,但IE10 +完全是64位核心(在64位系统上),子进程可以基于逻辑树运行32或64位页面(参见下面的链接)。增强保护模式(EPM)可以强制不受信任的站点以完全64位模式运行(有关详细信息,请参阅下面的文章)。这导致许多Add-Ons与EPM不兼容,例如Adobe Reader的浏览器内浏览器,直到v11.0.7没有64位功能组件(EPM强制执行64位)。

http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx

http://blogs.msdn.com/b/asiatech/archive/2013/12/25/how-internet-explorer-enhanced-protected-mode-epm-is-enabled-under-different-configurations.aspx

我不知道如何实现您的目标,但上述信息可以帮助您避免陷阱。

答案 3 :(得分:-1)

我不知道PowerShell的答案,但在C中你会将CLSCTX_ACTIVATE_32_BIT_SERVER传递给CoCreateInstance。也许您知道如何将其转换为PowerShell-land?

注意:在我执行此操作的代码中,有一条评论:“32位XP上存在此标志会导致调用失败”(随后针对Microsoft的API开发人员的暴力威胁,我不会在这里发布)。代码继续仅在64位Windows上运行时添加标志。

答案 4 :(得分:-1)

解决您问题的最简单方法是以32位启动Powershell。

启动

Windows Powershellx86

路径

C:\Windows\syswow64\Windowspowershell\v1.0\powershell.exe