3

Я хотел бы перехватить системные вызовы для открытия (http) URL. Меня не интересует, что делает браузер внутри. Скорее, какие URL пытается открыть проводник или другие программы (в частности, установщики).

Я могу создать файл "graburl.bat":

@echo off
echo Param is: "%1"
pause

в качестве обработчика HTTP по умолчанию, установив c:\graburl.bat" %1 (или "c:\graburl.bat" "%1") (несколько мест / методов будут работать, но в настоящее время я использую ' HKEY_CLASSES_ROOT\ HTTP \ оболочки \ открытой команды \ '). Тем не менее, я не могу захватить полные URL-адреса, содержащие амперсанд (&).

Например, с моей тестовой настройкой выше, работает

start "https://www.google.com/search?client=opera&q=escape+ampersand"

открывает окно с:

Param is: ""http://www.google.com/search?client=opera
'q' is not recognized as an internal or external command,
operable program or batch file.
Press any key to continue . . .

У меня нет никакого способа избежать (с помощью ^) или кодировать вызываемый URL, поэтому я не уверен, что я могу сделать. Есть ли способ изменить параметр на лету?

Очевидно, что браузеры работают со сложными URL-адресами, потому что их вызовы обработки http - просто "browser.exe" %1 . Я также попытался использовать "c:\windows\system32\cmd.exe" /k echo %1 но это тоже не помогло.

Какие-либо предложения? Я бы предпочел "родной" способ, но небольшая сторонняя программа, предпочтительно OSS, тоже подойдет. В конце концов, я хочу поместить их в журнал, а не просто выводить их на экран, поэтому было бы неплохо использовать cmdline .exe, который принимает строковый аргумент и передает его в файл.

Благодарю.

0