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