2

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

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

5 回答 5

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
于 2012-06-27T13:23:59.320 回答
1

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

于 2012-06-27T13:20:22.783 回答
1

需要注意的是,MSIE 的位级别很大程度上取决于版本。IE9 有单独的 32/64 位版本,可以独立执行,但 IE10+ 是完全 64 位内核(在 64 位系统上),其子进程可以基于逻辑树以 32 位或 64 位运行页面(参见下面的链接)。增强保护模式 (EPM) 可以强制不受信任的站点以完整的 64 位模式运行(有关详细信息,请参阅下面的文章)。这导致许多附加组件与 EPM 不兼容,例如 Adob​​e 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

我不知道如何实现您正在寻找的东西,但上述信息可能会帮助您避免陷入困境。

于 2015-10-15T15:04:42.743 回答
-1

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

注意:在我这样做的代码中,有一条评论:“在 32 位 XP 上存在此标志会使调用失败”(随后是针对微软 API 开发人员的一些暴力威胁,我不会在此处发布) . 只有在 64 位 Windows 上运行时,代码才会继续添加标志。

于 2012-06-27T13:08:40.450 回答
-1

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

发射

Windows Powershellx86

小路

C:\Windows\syswow64\Windowspowershell\v1.0\powershell.exe
于 2014-12-12T09:03:22.260 回答