查看協議和文件類型的默認應用
Win + I -> 應用 -> 默認應用,按協議指定默認應用。
可以看到有些程序自定義協議在里面,並且可以設置打開此協議的程序,但是並沒有發現可以新增協議。只能通過注冊表來解決。
自定義瀏覽器協議
chrome瀏覽器用到了自定義瀏覽器協議這一標准。自定義瀏覽器協議允許在瀏覽器中使用protocol://url
的形式進行調用本地程序。包括在網頁上拉起百度雲網盤、或者拉起QQ等等,都屬於自定義瀏覽器協議。
原理分析
在通過瀏覽器調用外部程序時,瀏覽器會在我們本地的注冊表中查找協議所對應的注冊表,並獲取實際要調用的程序路徑進行調用。
例如
rtsp://callback/?id=opaqueInternalAccesssObj
rtsp://為我們自定義的瀏覽器協議,后面的callback/?id=opaqueInternalAccessObj則為實際傳入的參數
注冊表解析
新建一個rtsp.reg文件,輸入如下內容
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\rtsp]
@="RTSPLoader Plugin"
"URL Protocol"="C:\\Program Files\\VideoLAN\\VLC\\vlc.exe"
[HKEY_CLASSES_ROOT\rtsp\shell]
[HKEY_CLASSES_ROOT\rtsp\shell\open]
[HKEY_CLASSES_ROOT\rtsp\shell\open\command]
@="C:\\Program Files\\VideoLAN\\VLC\\vlc.exe %1"
雙擊運行后在瀏覽器中輸入rtsp://后會提示是否打開RTSPLoader Plugin(實則是打開Windows Shell)。
參數解析
-
[HKEY_CLASSES_ROOT] 是應用程序運行時必須的信息,[HKEY_CLASSES_ROOT\rtsp]表示在該注冊表目錄下生成了一個rtsp的應用程序運行時必須的信息。
@=為該應用程序默認名稱,用來顯示程序名稱,不填則為exe名稱。
URL Protocol=為該協議所要調用的程序地址。 -
[HKEY_CLASSES_ROOT\rtsp\shell]在rtsp\下生成shell目錄。
-
[HKEY_CLASSES_ROOT\rtsp\shell\open]在rtsp\shell\下生成open目錄。
-
[HKEY_CLASSES_ROOT\rtsp\shell\open\command]在rtsp\shell\open\下生成command目錄,@=在command目錄下新建一個默認值為協議調用程序的實際路徑。%1代表rtsp://后面跟的參數。
注冊表效果
輸入地址: 計算機\HKEY_CLASSES_ROOT\rtsp,可以看到調用rtsp的程序名設置,和調用rtsp協議的默認程序(URL Protocol)
最終執行命令及參數
點擊頁面的rtsp超鏈接,提示用VLC media player打開。
參考:
https://blog.csdn.net/lu_wei_wei/article/details/61421270
https://veryfirefly.github.io/custom-external-protocol-副本/