Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用协议处理程序(即url)从Chrome打开Internet Explorer_Windows_Internet Explorer_Handler_Protocol Handler - Fatal编程技术网

Windows 使用协议处理程序(即url)从Chrome打开Internet Explorer

Windows 使用协议处理程序(即url)从Chrome打开Internet Explorer,windows,internet-explorer,handler,protocol-handler,Windows,Internet Explorer,Handler,Protocol Handler,我遵循了这些步骤,但它对我来说并不正确。 基本上,我没有定制的应用程序。我只想创建一个处理程序,用一个特定的URL打开IE 这是我的注册码: Windows注册表编辑器5.00版 [HKEY\U当前用户\软件\类\ ie] “URL协议”=“\”\“” @=“URL:IE协议” [HKEY\U当前用户\软件\类\ ie\DefaultIcon] @=“explorer.exe,1” [HKEY\U当前用户\软件\类\ ie\shell] [HKEY\U CURRENT\U USER\Softw

我遵循了这些步骤,但它对我来说并不正确。

基本上,我没有定制的应用程序。我只想创建一个处理程序,用一个特定的URL打开IE

这是我的注册码:

Windows注册表编辑器5.00版
[HKEY\U当前用户\软件\类\ ie]
“URL协议”=“\”\“”
@=“URL:IE协议”
[HKEY\U当前用户\软件\类\ ie\DefaultIcon]
@=“explorer.exe,1”
[HKEY\U当前用户\软件\类\ ie\shell]
[HKEY\U CURRENT\U USER\Software\Classes\ie\shell\open]
[HKEY\U CURRENT\U USER\Software\Classes\ie\shell\open\command]
@=“C:\\Program Files\\Internet Explorer\\iexplore.exe\”\%1“
它正在工作,但是。。。当我从Chrome上打开ie:www.google.com时,它要求打开ie,但在打开的URL中保留了“ie:”。。。这会产生一个无止境的循环

我怎样才能解决这个问题

谢谢


经过几次测试后,我转向另一种策略。 我的目标是一个中间批处理脚本。 然后批量拆分协议和url,并打开IE

这是一批:

echo %1%
set var=%1
set var=%var:~4,-1%
Start "" "%ProgramFiles%\Internet Explorer\iexplore.exe" %var%
创建协议处理程序 将此脚本另存为internet explorer协议处理程序.reg:

Windows注册表编辑器5.00版
[HKEY\U当前用户\软件\类\ ie]
“URL协议”=“\”\“”
@=“URL:IE协议”
[HKEY\U当前用户\软件\类\ ie\DefaultIcon]
@=“explorer.exe,1”
[HKEY\U当前用户\软件\类\ ie\shell]
[HKEY\U CURRENT\U USER\Software\Classes\ie\shell\open]
[HKEY\U CURRENT\U USER\Software\Classes\ie\shell\open\command]
@=“cmd/k set myvar=%1&调用set myvar=%%myvar:ie:=%%&调用\”C:\\Program Files(x86)\\Internet Explorer\\iexplore.exe \“%%myvar%%&退出/B”
然后运行脚本在注册表中安装密钥。它将如下所示:

现在,使用
ie:
协议的链接将在Internet Explorer中打开



如果将注册表的最后一行作为

@="cmd /C set myvar=%1 & call set myvar=%%myvar:ie:=%% & call start /separate iexplore %%myvar%% & exit"
您不需要创建自定义脚本

在这种情况下,目标URL可以有多个查询参数,您可能会遇到只有第一个参数传递给IE的问题(请检查IE上的地址栏以进行验证)。 在这种情况下,您可以采用以下解决方法。。。只需在编码后创建一个传递目标URL的新html文件,并在IE上打开此html


window.location=“ie:”++“?path=“+encodeURIComponent()以下命令适用于要传递的所有查询参数:


cmd/C set myvar=“%1”&调用set myvar=%%myvar:ie:=%%&调用start/separate“iexplore.exe”%%myvar%%&exit

以下是一个解决方案,可以解决包含参数和特殊字符(&,%etc.)的扩展url的问题

像这样:

将reg文件中的命令替换为:

powershell -windowstyle hidden -command "& {$Url = '%1' ;  $Url = $Url -replace 'ie:',''; $IE=new-object -com internetexplorer.application ; $IE.navigate2($Url) ; $IE.visible=$true }"
:

一些重要注意事项:

  • 您必须将
    %1
    用双引号括起来。
    否则带有多个参数的url,如
    example.com?a=1&b=2
    将被剥离到
    example.com?a=1
    ,而
    之后的参数将被忽略
    
  • 调用
    iexplore
    时必须删除双引号。如果不删除双引号并从chrome中打开多个IE窗口,则只有第一个IE窗口将获得正确的URL。但是使用命令
    set url=%%url:\“=%%
    set url=%%url:~1,-1%%
    删除引号不起作用
  • 如果您无法删除这些引号,请将开关
    -nosessionmerging
    -noframemerging
    添加到
    iexplore
    以控制IE的“合并”行为

  • 以下命令适用于要传递的所有查询参数:

    cmd/C set myvar=“%1”&调用set myvar=%%myvar:ie:=%%&调用开始 /单独的“iexplore.exe”%%myvar%%退出


    我们需要使用双引号,当链接中有一个符号,并且在删除符号后在IE11中无法打开时。

    如果url包含特殊字符,例如=或&。从Internet Explorer打开Chrome?带有参数的url,如example.com?a=1&b=2将无法正常工作。它将被剥离为
    example.com?a=1
    b
    被忽略。@Jeremy Danyow它工作得很好!!问题是在打开之前,Chrome会显示一个对话框:“打开Windows命令处理器”“。可以避免确认吗?@gabi13,在那里你可以找到解决方案,我也在试图找到禁用cmd处理器的打开。此外,加载新浏览器时未捕获辅助参数。您需要从url中删除
    即:
    架构。使用
    @=“cmd/v:on/q/c\”设置url=%1并启动c:\\PROGRA~1\\INTERN~1\\iexplore.exe!网址:~3\“”
    第14行如果我理解正确,您可以控制双方(1.创建url的一方和2.读取url并转发到IE的一方),这样您就可以想出自己的特殊转义方案。那么如何从chrome上运行此脚本?它工作得很好。但除了一点化妆品相关的东西。当我点击一个按钮时,我会得到一个类似“打开Windows命令处理器”的提示。是否有办法隐藏此提示,以便用户无需一直单击“打开Windows命令处理器”?
    Windows Registry Editor Version 5.00
    
    [HKEY_CURRENT_USER\Software\Classes\ie]
    "URL Protocol"=""
    @="URL:IE Protocol"
    
    [HKEY_CURRENT_USER\Software\Classes\ie\shell]
    
    [HKEY_CURRENT_USER\Software\Classes\ie\shell\open]
    
    [HKEY_CURRENT_USER\Software\Classes\ie\shell\open\command]
    @="cmd /c set url=\"%1\" & call set url=%%url:ie:=%% & call start iexplore -nosessionmerging -noframemerging %%url%%"