Откройте Internet Explorer из Chrome с помощью обработчика протокола (например, url)

Я следовал за этими шагами, и это не работает для меня правильно. Обработчик нестандартного протокола в Chrome

По сути, у меня нет собственного приложения. Я просто хочу создать обработчик для открытия IE с определенным URL.

Вот мой рег:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\ie]
"URL Protocol"="\"\""
@="\"URL:IE Protocol\""

[HKEY_CURRENT_USER\Software\Classes\ie\DefaultIcon]
@="\"explorer.exe,1\""

[HKEY_CURRENT_USER\Software\Classes\ie\shell]

[HKEY_CURRENT_USER\Software\Classes\ie\shell\open]

[HKEY_CURRENT_USER\Software\Classes\ie\shell\open\command]
@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" \"%1\""

Это работает, но... когда я открываю ie: www.google.com из Chrome, он просит открыть IE, но сохраняет "ie:" в открытом URL-адресе..., что создает бесконечный цикл.

Как я могу это исправить?

Благодаря

Screenshot

Ответ 1

После нескольких тестов я перехожу к другой стратегии. Вместо этого я запускаю промежуточный пакет script. И пакет разделяет протокол и URL-адрес, а также открывает IE.

Вот пакет:

echo %1%
set var=%1
set var=%var:~4,-1%
Start "" "%ProgramFiles%\Internet Explorer\iexplore.exe" %var%

Ответ 2

Создать обработчик протокола

сохраните этот скрипт как internet-explorer-protocol-handler.reg:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\ie]
"URL Protocol"="\"\""
@="\"URL:IE Protocol\""

[HKEY_CURRENT_USER\Software\Classes\ie\DefaultIcon]
@="\"explorer.exe,1\""

[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 /k set myvar=%1 & call set myvar=%%myvar:ie:=%% & call \"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe\" %%myvar%% & exit /B"

Затем запустите скрипт, чтобы установить ключи в вашем реестре. Это будет выглядеть так:

registry

Теперь ссылки, использующие протокол ie: откроются в Internet Explorer.

<a href="ie:https://www.google.com/">Google</a>

Демо-страница

Ответ 3

Вот решение, которое должно решить проблему с расширенным URL, который содержит параметры и специальные символы (&,% и т.д.)

Вот так: https://www.google.com/search?q=open-internet-explorer-from-chrome-using-a-protocol-handler&oq=open-internet-explorer-from-chrome-using-a-protocol -handler & AQS = chrome..69i57j69i60l3.1754j0j4 & SourceId = хром & т.е. = UTF-8,

Замените команду в reg файле на это:

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

Ответ 4

Реализация реестра будет более общей, если последняя строка реестра будет

@="cmd /C set myvar=%1 & call set myvar=%%myvar:ie:=%% & call start /separate iexplore %%myvar%% & exit"

Вам не нужно создавать пользовательские script.

В случае, если целевой URL может содержать более одного параметра запроса, может возникнуть проблема, связанная с тем, что только первый параметр передается в IE (проверьте адресную строку в IE для проверки). В таком случае вы можете воспользоваться следующим обходным решением... просто создайте новый html файл, передающий целевой URL после его кодирования и откройте этот HTML-код в IE.

window.location = "ie:"+<URL to the above HTML>+"?path="+encodeURIComponent(<target URL>);

Ответ 5

следующая команда будет работать для всех передаваемых параметров запроса:

cmd/C установить myvar = "% 1" и установить вызов myvar = %% myvar: т.е.: = %% & запустить/разделить "iexplore.exe" %% myvar %% & exit

Ответ 6

  следующая команда будет работать для всех передаваемых параметров запроса:

cmd/C set myvar="%1" & call set myvar=%%myvar:ie:=%% & call start /separate "iexplore.exe" %%myvar%% & exit

Нам нужно использовать двойные кавычки, когда ссылка содержит амперсанд и не будет открываться в IE11 как что-либо после того, как амперсанд был обрезан.

Ответ 7

Рабочий реестр:

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%%"

Некоторые важные замечания:

  1. Вы должны обернуть %1 в двойные кавычки. В противном случае URL с несколькими параметрами, такими как example.com?a=1&b=2 будет удален до example.com?a=1, а параметры после & будут игнорироваться.
  2. Вы должны удалить двойные кавычки при вызове iexplore. Если вы не удалите двойные кавычки и не откроете несколько окон IE из Chrome, только первое окно IE получит правильный URL. Но удаление кавычек с помощью команды set url=%%url:\"=%% или set url=%%url:~1,-1%% не работает.
  3. Если вы просто не можете удалить эти кавычки, добавьте переключатели -nosessionmerging и -noframemerging в iexplore. Это параметры командной строки для управления поведением "слияния" для IE.