開頭放一個微軟關於默認應用的注冊表文檔
https://docs.microsoft.com/en-us/windows/win32/shell/default-programs
先規定一下名詞
項 也就是路徑中一個節點的名字,跟文件夾與子文件夾差不多,項有子項,類比的話就是有子文件夾
例如下面這個路徑
計算機\HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications
項分別是下面這四個
計算機
HKEY_LOCAL_MACHINE
SOFTWARE
RegisteredApplications
值 可以類比成是文件夾下的文件
數據 按照類比的話就是文件中的內容
Windows默認應用大體上有如下注冊表關系
首先假如一個程序想要注冊成為默認瀏覽器的候選者,那么他要先在一個特定注冊表項下添加一個值和一個值所關聯的數據,值應該是任意的,但是值關聯的數據則是一個注冊表路徑,指向另外一個注冊表項
而在這個另外的注冊表項中包含具體的信息,用來告訴操作系統他想要注冊為默認瀏覽器,當然也可以是默認播放器
該項的子項中存在一些值和關聯的數據,值是該應用可以打開的類型(圖片,視頻,URI),數據則又是另一個注冊表路徑,用來描述如何打開該類型的東西(里面就有應用Exe的路徑)
我們的目的就是修改Chrome如何打開HTTPS與HTTP協議的描述
我們知道Chrome有一個命令行參數用來啟動無痕模式
-incognito
所以我們要在注冊表中找到一個可以輸入啟動參數的位置,把上面的參數加進去
首先你的Chrome必須是默認瀏覽器,或者說已經注冊為默認瀏覽器的候選人,這樣的話才有注冊表項,否則找不到,假如不是默認瀏覽器但是只是候選人則沒有作用
根據文檔
注冊為默認應用的程序都在這兩個注冊表路徑下有值
計算機\HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications
計算機\HKEY_CURRENT_USER\SOFTWARE\RegisteredApplications
第一個是影響全局的,我的Chrome默認單用戶安裝所以這個里面沒有,但是有火狐和Edge和IE以及其他應用
第二個是當前用戶的,我的Chrome就在這個下面
我們看該注冊表項下這些值與關聯的數據,比如我的這個,它是一個路徑,指向另一個注冊表項,來告訴操作系統它注冊的是什么東西,是默認播放器還是默認圖片查看器還是默認WEB瀏覽器
所以我們找到這個項,根據上下文根路徑可能不同,我的是在當前用戶根下
查看他的子項,在它的 URLAssociations 這個子項下面存在 https http 這些值與對應的數據,數據是另外的項的名字我們可以直接搜這個名字
搜索可以選擇僅項然后全字匹配
在搜到的項的子項 shell > open > command 下面 我們找到了想要的東西
我們只需要在該項的默認值的數據中添加一個命令行參數就大功告成了, 最后面的 %1 則是一個占位符會被替換為你點開的那個URI, 你完全可以把exe的路徑替換成別的程序的路徑