在Chrome瀏覽器中點擊連接,打開IE瀏覽器,跳轉到指定頁面並傳遞參數
shell
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\alert]
@="URL:
Alert Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\alert\DefaultIcon]
@="iexplore.exe,1"
[HKEY_CLASSES_ROOT\alert\shell]
[HKEY_CLASSES_ROOT\alert\shell\open]
[HKEY_CLASSES_ROOT\alert\shell\open\command]
@="
cmd /c set m=%1 & call set m=%%m:alert:=%% & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%%"
|
set m=%1(%1爲傳遞過來的參數,將其賦給變量m)
set m=%%m:alert:=%%
(將前綴alert:
清除)
"C:\\Program Files\\InternetExplorer\\iexplore.exe" %%m%%
(打開IE
瀏覽器並跳轉到指定頁面)
|
<a href="alert://www.baidu.com?a=1" />test |
<a href="alert://www.baidu.com?a=1&b=2" />test |
修改alert.reg瀏覽器
[HKEY_CLASSES_ROOT\alert\shell\open\command]@="cmd /c set m=%1 & echo 1的值:%1 & call echo m的值:%%m%% & call set m=%%m:alert:=%% & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%% & exit" |
運行效果:測試
看來特殊符號&是沒法直接傳遞了,因而想到了用自定義的分隔字符串separator來替代&符號,並在傳遞給IE前,將其替換回&符號。
修改alert.regspa
[HKEY_CLASSES_ROOT\alert\shell\open\command] @="cmd /c set m=%1 & call set m=%%m:alert:=%% & call set m=\"%%m:separator=&%%\" & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%%" |
測試連接:ci
<a href="alert://www.baidu.com?a=1separatorb=2" />test |
運行效果:字符串
參數b傳遞成功!
本覺得能夠功成身退了,卻發現個詭異的現象。
第一次點擊測試連接OK,不關閉IE的狀況下再次點擊連接,新彈出的IE地址有誤,效果以下:cmd
地址欄變爲了:http://%22//www.baidu.com/?a=1&b=2%20%20"
修改alert.regit
[HKEY_CLASSES_ROOT\alert\shell\open\command] @="cmd /c set m=%1 & call set m=%%m:alert:=%% & call echo 第一次替換:%%m%% & call set m=\"%%m:separator=&%%\" & call echo 第二次替換:%%m%% & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%%" |
運行效果:io
緣由分析:
執行m=\"%%m:separator=&%%\"後,m的值變爲了"//www.baidu.com/?a=1&b=2 "
看來問題出在雙引號上,但由於包含特殊字符&,此處必需使用雙引號。
嘗試各類寫法未果,後經培高人指點,將具體的操做寫到bat文件中,在此處調用該bat。
在C:\Program Files\WisoftAlert目錄下新建alert.battable
@echo off set m=%m:alert:=% set m="%m:separator=&%" start "" "C:\\Program Files\\Internet Explorer\\iexplore.exe" %m% exit |
修改alert.reg
[HKEY_CLASSES_ROOT\alert\shell\open\command] @="cmd /c set m=%1 & \"C:\\Program Files\\WisoftAlert\\alert.bat\" %%m%% & exit" |
屢次點擊測試連接均成功!(效果圖略)
階段三:方便用戶操做
新建runreg.bat,自動註冊協議
REGEDIT /S alert.reg |
經過WinRAR將alert.reg,alert.bat,runreg.bat打包成exe文件
解壓路徑需與alert.reg中一致 |
解壓後自動運行runreg.bat,寫入註冊表信息 |
靜默執行 |
階段四:連接中直接使用&符號
修改alert.reg,將參數%1用雙引號引發來
[HKEY_CLASSES_ROOT\alert\shell\open\command] @="\"C:\\Program Files\\WisoftAlert\\alert.bat\" \"%1\"" |
修改alert.bat
@echo off set m=%1% set m=%m:alert:=% start "" "C:\\Program Files\\Internet Explorer\\iexplore.exe" %m% exit |
測試連接:
<a href="alert://www.baidu.com?a=1&b=2" />test |
測試成功!