Windows 启动IE的自定义协议处理程序-结果不一致

Windows 启动IE的自定义协议处理程序-结果不一致,windows,internet-explorer,protocol-handler,Windows,Internet Explorer,Protocol Handler,我在使自定义协议处理程序正确启动IE时面临一个问题 以下是我试图做的: 我有我的网页,用户需要在chrome中访问。该页面具有指向某些外部web应用程序的链接。这些外部web应用程序只能在Internet Explorer上正常工作。 我必须以某种方式启动IE,在点击链接时使用外部web应用程序的url 客户不愿意使用像IETab这样的插件来启动这些外部应用程序 因此,我尝试定义一个自定义协议处理程序,该处理程序将获取目标URL作为参数,并使用目标URL启动internet explorer浏览

我在使自定义协议处理程序正确启动IE时面临一个问题

以下是我试图做的: 我有我的网页,用户需要在chrome中访问。该页面具有指向某些外部web应用程序的链接。这些外部web应用程序只能在Internet Explorer上正常工作。 我必须以某种方式启动IE,在点击链接时使用外部web应用程序的url

客户不愿意使用像IETab这样的插件来启动这些外部应用程序

因此,我尝试定义一个自定义协议处理程序,该处理程序将获取目标URL作为参数,并使用目标URL启动internet explorer浏览器

只要没有IE窗口已经打开,它就可以正常工作。但是当已经有IE运行的实例时,其行为会有所不同

我使用了以下代码:

在HTML文件中:

function launchIE(target){
window.location = "launchIE:\"http://external.url.com?param1=1&param2=2\"";
}
通过将以下内容添加到windows注册表中,我已将处理程序注册到自定义协议“launchIE”:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\launchIE]
"URL Protocol"="\"\""
@="\"URL:launchIE Protocol\"" 

[HKEY_CLASSES_ROOT\launchIE\DefaultIcon] 
@="\"iexplore.exe,1\"" 

[HKEY_CLASSES_ROOT\launchIE\shell]
[HKEY_CLASSES_ROOT\launchIE\shell\open]
[HKEY_CLASSES_ROOT\launchIE\shell\open\command] 
@="cmd /C set myvar=%1 & call set myvar=%%myvar:launchIE:=%% & call start /separate iexplore %%myvar%% & exit"
在上面的设置中,当我点击按钮触发上面的javascript时,我启动了InternetExplorer。 如果没有Internet Explorer实例已打开,IE将正确打开URL。

但是,如果已经有IE实例打开(由用户手动打开或由于之前单击“我的页面”上的按钮),IE将打开错误的URL“

请帮忙…我该怎么解决这个问题


我正在使用windows 10和IE 11。

我通过创建一个单独的批处理文件并用双引号括住URL来解决此问题:

[HKEY_CURRENT_USER\Software\Classes\ie\shell\open\command]
@="cmd /C c:/tmp/ie.bat \"%1\" & exit"
蝙蝠:

set var=%1
set var=%var:ie:=%
call start /separate iexplore %var%
exit