網站快捷方式到桌面(你可能不知道的)

關於 Windows 上的一類文件有這麼一些笑話:你請某人發送一個文件副本,Ta 將桌面上的「文件」拖到瞭聊天框,叮當一響,你收到瞭一份 document.lnk;你告訴 Ta 將某某軟件卸載,於是 Ta 把桌面上的「軟件」移到瞭回收站,告訴你「搞定瞭」……這類文件讀者都很熟悉,我們一般稱之為快捷方式,它們的圖標上都帶著小箭頭。大部分軟件安裝後往往會同時在桌面和開始菜單中創建快捷方式;如果沒有,一些讀者可能會在目標文件上 右鍵 > 發送到 > 桌面快捷方式 自己己新建一個。但除瞭右鍵發送到桌面,Windows 快捷方式其實還可以更快捷:在引用對象支持的情況下,它能做到直接調用軟件的子功能、以某個模式啟動程序等等。讓我們先從快捷方式的工作方式講起。快捷方式的基本知識在微軟的 開發者文檔 中,快捷方式有另外一個更準確的表述:Shell Links,可翻譯為殼層鏈接。這個名稱更趨近於它的本質:用於 Windows 殼層(Shell)的鏈接文件。Windows 圖形殼層自然是資源管理器(explorer.exe),這是它賴以工作的進程;而「鏈接」則說明 Shell Links 是指向引用對象(corresponding object)的文件而並非對象本身。工作方式和屬性以桌面上的 Firefox.lnk 為例,當我們雙擊此鏈接,資源管理器發現用戶嘗試打開的文件類型為快捷方式,便讀取瞭它的「目標」屬性的內容 C:\Program Files\Mozilla Firefox\firefox.exe,然後嘗試打開此「目標」,Firefox 程序於是被喚起瞭。這和我們在資源管理器地址欄輸入 Firefox.exe 位置的原理和效果是類似的。但不同的是,快捷方式有幾個其他的屬性是我們不能通過填充地址欄做到的:起始位置(工作目錄 & working directory):告訴資源管理器從哪個位置打開目標,或者說,將目標運行在哪個位置;快捷鍵:當焦點位於快捷方式所在目錄時,資源管理器接受以快捷鍵打開鏈接;備註/圖標:快捷方式作為一個文件用於展示自己的各類信息。後綴名和類型聽到打開快捷方式和在資源管理器地址欄輸入地址類似,一些讀者可能會想到,Windows 資源管理器地址欄不光能輸入文件地址,還可以輸入shell:downloads 直接打開下載文件夾,輸入shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}打開控制面板,輸入https://example.com打開網站……是的,快捷方式也能接受這些內容。根據引用對象種類的不同,常用的快捷方式分為兩種:.lnk 鏈接文件:註冊表位置HKCR\lnkfile,引用對象是目錄或文件(包括可執行程序);.url 網絡快捷方式:註冊表位置HKCR\InternetShortcut,引用對象是 URI。創建方式和解析過程通過圖形界面創建快捷方式目前有兩種途徑:從引用對象創建和使用向導創建:從引用對象創建:這種方式需要我們提前定位到引用對象(即快捷方式的目標),選中這個對象,要麼右鍵 > 發送到 > 桌面快捷方式,要麼按住 Alt 鍵,使用鼠標拖動文件到目標目錄,然後松開鼠標。前者在 Windows 11 已經變得非常繁瑣。使用快捷方式創建向導:在任意目錄下右鍵,選擇新建 > 快捷方式,填入引用對象的地址和名稱。以上面兩種方式創建快捷方式時,引用對象必須存在。但是創建完成後,引用對象存在與否就不再影響快捷方式,兩者隻會在用戶打開快捷方式時發生關聯。當用戶雙擊快捷方式時,系統會嘗試解析該快捷方式:首先它會用快捷方式指向的路徑檢查引用對象是否能直接找到;如果路徑的目標無對象,資源管理器接下來會使用名為 分佈式鏈接跟蹤 的技術,依靠對象原來的大小,名稱,創建日期等信息進行檢索,成功找到目標後 Windows 會自動更新快捷方式的目標屬性;若無法找到則會提示用戶刪除快捷方式。鏈接跟蹤技術的應用給快捷方式帶來瞭硬鏈接一樣的解析效果:引用對象刪除後恢復、重命名、移動位置都不會導致快捷方式失效。由於它也像符號鏈接一樣依靠文件路徑定位,所以隻要路徑正確,無論引用對象是否是原來的文件,快捷方式都會將其打開。與符號鏈接的區別同樣可以鏈接到文件的路徑,同樣由系統提供支持,快捷方式和 符號鏈接 卻有本質上的區別。快捷方式仍然是一個文件,它有自己的後綴名,有對應的數據(一個地址)和大小(幾 KB),還有自己的圖標和屬性。但符號鏈接沒有對應的數據對象,因而也沒有大小可言,它沒有後綴名,不具有完整文件結構。以一個房子為例,每一個房子都有坐標。給別人一個符號鏈接,相當於為他開瞭一個直通房屋所在的傳送門,他不需要知道房子實際在什麼地方;而快捷方式隻是一張寫有地址的小紙條,他需要自己摸索才能到達房子。資源管理器可以讀取紙條內容後找到房屋所在,但其他程序未必有這個能力。本節匯總:快捷方式的更多可能綜上所述,類似 TXT 文本由 Notepad 打開,快捷方式由資源管理器處理,它將自己的各個屬性值傳達給資源管理器,後者負責檢索並打開引用對象。引用對象可以是文件、目錄或 URI。指向一個文件、目錄、網頁的快捷方式想必讀者司空見慣。但可執行程序並不是普通文件那麼簡單:notepad.exe 會打開一個未命名的文件,notepad.exe kepa.txt 則會新建一個名為kepa.txt 的文本文件;URI 方案亦不隻有 HTTPS,它可是 iOS 自動化的老將。為鏈接文件添加標識與參數,將網絡快捷方式目標設置為 Windows 支持的的 URI Schemes,也許能解鎖快捷方式更多的可能性。為鏈接文件添加標識與參數在圖形化操作系統尚未普及之前,用戶一次又一次輸入 命令 標識(flags)參數 來完成工作。這種方式即使放在今天在很多情況下仍然比圖形界面更高效。且不談一些仍然流行的終端應用,即使是那些專門為圖形界面設計的應用,不少也提供瞭終端調用的方式和豐富的標識,而這些都能被快捷方式利用。下面以四個實例講解相關用法,本節的小結部分總結瞭查找標識參數的兩個方法。用例一:快速新建 Word 博客文章Word 內置瞭博客寫作工具,完成後可以從軟件內直接發送至 WordPress 等平臺。但打開 Word,點擊新建,再選擇模板比較麻煩,能不能創建一個雙擊直接新建 Word 博客文章的快捷方式呢?首先,我們需要確認 Word 支不支持命令調用的形式,有沒有提供可用的標識。在搜索引擎中鍵入 Microsoft Word CLI Flags,前幾個結果中就有微軟官方給出的 Office 終端調用文檔,文檔稱可以用 -t 加模板路徑的方式據模板新建文檔,這正是我們想要的。使用這類快捷方式比較推薦的做法是首先定位到應用,將此應用的快捷方式作為底版。例如此例中,Word 在 Program Files\Microsoft Office 中,找到 EXE 文件、按住 Alt 拖到桌面創建一個快捷方式。打開創建的快捷方式,編輯其「目標」屬性,在後面添加 -t"模板文件路徑" -q,這告訴 Word 跳過啟動動畫並按模板文件直接新建一個文檔。將圖標和快捷鍵名稱改成自己喜歡的樣子,一個簡單便捷的快捷方式就做好瞭。用例二:以無痕模式打開 Chrome想要有一個直接以無痕模式運行的 Chrome,方便銷毀敏感的搜索記錄。和上一個例子一樣,首先以 Chrome CLI Flags 為關鍵詞搜索,發現 Chrome 提供的參數多得幾頁都裝不下。不過我們隻需要找和無痕模式相關的標識,在網頁內以 incognito 為關鍵詞搜索,立即能發現–incognito 標識。為 Chrome 創建快捷方式做為底版,然後在目標屬性後添加 –incognito 即可。實際上,Chrome 為安裝的瀏覽器應用創建的快捷方式,和它為不同的用戶創建的快捷方式也都是通過添加標識和參數實現的。用例三:一鍵歸檔桌面的已用圖片文章寫到現在,筆者的桌面已經堆瞭不少配圖。由於個人習慣邊寫邊配圖,需要用的圖片已經自動上傳圖床,桌面上的圖片大概率不會再用到瞭。我期望將它們快速移動到一個文件夾中,讓桌面上新放的圖更好找到。截圖和制圖工具自動生成的圖片命名全都以年份(2021)開頭,所以這個操作用 PowerShell 實現起來並不難:ni archive -Type Directory -Force; mv 2021* -Destination .\archive\想要用快捷方式調用 PowerShell,可以找找 pwsh.exe( PowerShell 7 的 exe 名稱)有沒有給什麼提示:在終端輸入 pwsh.exe -h,發現可以用 -c 參數調用命令:接下來,我們用向導的方式創建這樣一個快捷方式。在桌面 右鍵 > 新建 > 快捷方式,輸入pwsh.exe -nol -c ni archive -Type Directory -Force; mv 2021* -Destination .\archive\,-nol 是不加載 Logo,會讓命令處理更快一點。輸入完名稱後,右鍵剛才創建的快捷方式,修改以下信息:起始位置:由於命令中我們使用的是相對位置,所以要把起始位置設置為桌面的路徑;運行方式 > 最小化:這樣不會有 PowerShell 窗口彈出,可從任務欄判斷命令執行情況;(可選)快捷鍵:方便操作;(可選)常規 > 屬性 > 隱藏:配合快捷鍵設置使用,這樣一來桌面甚至連這個快捷方式都看不到,更簡約。然後,將焦點移到桌面,按下預先設置好的快捷鍵或者點按此快捷方式圖標,所有圖片立刻歸檔完成。用例四:創建系統關鍵位置的快捷方式第四個例子是為瞭補充一種情況——資源管理器本身的特殊參數。我們都使用過系統自動創建的回收站、控制面板、下載文件夾等快捷方式,但它們是如何工作的,用戶能不能自行創建這些關鍵位置的快捷方式呢?事實上,這些資源管理器內部的特殊位置是由系統在註冊表中定義的,HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions中包含瞭幾乎所有這類關鍵位置的信息。每一個位置都對應著獨一無二的名稱(Name 鍵數據)和 GUID(項)。例如桌面文件夾對應的名稱是 Desktop,GUID 是{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}。TenForums 據此整理瞭兩份(按名稱,按 GUID)列表大傢也可以參考。在快捷方式中調用它們也很簡單,方法是使用 explorer.exe shell:Name 或者 explorer.exe shell:::GUID。舉例來說,想要創建一個直達聲音設置界面的快捷方式,可以使用右鍵,新建快捷方式,其內容填explorer.exe shell:::{F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D}。本節匯總:如何找到想要的標識和參數?以上四個例子,涵蓋瞭絕大多數種類的應用。不難看出快捷方式創建過程並不復雜,可能會難住讀者的是找到應用支持的標識參數的方法。這是有規律可循的:終端命令與應用:例如 Move-item、Windows Terminal、Magick,我們可以先定位到命令或應用所在,輸入 應用名 -h 或 應用名 /h,一般都會出現各種參數的解釋;再不濟則可以從它們的官網中尋找,終端命令和應用必然會給出完善的文檔,它們本就以供用戶使用為設計目的。傳統應用:例如 Word、Vmware、Explorer、ShareX,它們一般都不提供在終端可見的幫助。這時候需要以 應用名稱 CLI Flags 為關鍵詞在搜索引擎中檢索。如果官方提供瞭相關的功能,那大概率就會有在線文檔。用 URI Schemes 創建網絡快捷方式一個指向某資源的具體地址,如 https://example.com,被稱為 URL。這串字符作為命名方式而言的第一級就是 URI Scheme(統一資源標志符方案)。我們最常見的 HTTPS 隻是 數以百計 URI 方案中的一種。正如同我們能不通過網站主頁用 URL 直接打開某一篇文章一樣,URI 亦可以用於打開軟件內的某一個位置。若讀者在瀏覽器上搜索過 Windows 商店應用,點擊安裝,瀏覽器會彈出「打開 Microsoft Store」的提示,點擊後會跳轉到 Windows Store。這就是 Windows 上 URI Schemes 的簡單應用。將 URI Schemes 用於快捷方式的講解也像上一節一樣,先看幾個用例,個中要點放在小結部分。用例一:打開 Obsidian 特定條目作為筆者的主力筆記應用,Obsidian 中有一些使用非常頻繁的筆記,例如 Todo,快速筆記等。要是能有迅速打開這些筆記的快捷方式自然再好不過。Obsidian 並沒有提供好用的標識參數,所以不妨求助於同樣強大的 URI Schemes。以 obsidian URI Schemes 為關鍵詞搜索,能找到開發者對 Obsidian URI 的詳細解釋文檔。當然,我們的目標隻是找到打開 Obsidian 某條目的快速方法。使用過 Obsidian 的讀者應該能發現右鍵某個條目會有 復制 Obsidian URL 的選項,我們需要的就是這樣一個鏈接。同樣使用右鍵調出創建向導,在彈出的內容中填寫剛剛復制的 URI,一個快捷方式就創建完成瞭。如果還有其他需要快速調用的筆記,也可以如此操作。用例二:常用聊天界面直達和要好的朋友聊天、寫郵件,有什麼東西需要立刻和朋友分享,這些操作都需要進入客戶端後選擇聊天對象。能不能更簡便一點,直接喚起和某人的聊天呢?隻要應用支持,這是能夠實現的。檢索的方式仍然是 應用名 uri schemes,根據搜索到的提示,我在快捷方式創建向導的目標位置框中填入下面三個內容:mailto:[email protected]:直接向某人發送郵件;tencent://Message/?Uin=QQ 號:打開和某人的 QQ 聊天。經過筆者 查閱,微信 PC 端曾經支持類似的功能,但目前隻能用 weixin: 喚起微信主界面。飛書亦 支持 lark: 開頭的外部請求,但喚起聊天界面需要對方的 OpenID。用例三:設置條目直達作為 Windows 的特點之一,控制面板與更現代的設置兩代同堂的局面已經持續很久。不難發現是它們倆可以相互跳轉到某項功能的子界面。通過上一個節的第四部分,我們知道控制面板內的條目能用 GUID 等方式調用,那麼更現代的設置是怎麼做的呢?答案是 URI。以 ms-settings URI schemes 為關鍵詞檢索,能發現微軟給出的 官方文檔,裡面詳細列舉瞭以 ms-settings 開頭的各類可用 URIs。這些 URIs 是被設計為供開發者調用的,作為用戶的我們也可以按照自己的需要將它們創建為快捷方式。比如說,筆者認為通過任務管理器導航到開機自啟管理界面過於麻煩,那麼我可以使用右鍵,創建快捷方式,在對象位置一欄中寫入 ms-settings:startupapps。將此快捷方式移動到開始菜單,以後就能直接點擊或者搜索 開啟自啟 來訪問此項設置瞭。微軟的許多 UWP 類型的系統應用,例如 Edge、商店、人脈,都提供瞭 URI Scheme 支持。對於一些變量,例如默認瀏覽器、默認視頻播放器,Windows 也有對應的 URIs 可供調用。本節匯總:在 Windows 中查詢 URI SchemesWindows 下想要知道哪些應用支持 URI 調用還是很簡單的:URI Schemes 在註冊表中被表述為 URL Protocol,要使用 URI 的應用必須在註冊表中新建一個帶有 URL Protocol 字符串的項2。我們可以通過瀏覽 HKCR ,來確認某應用的 URI Scheme 支持情況。如下圖所示,能看到 BiliBili UWP 版註冊瞭 bilibili:對於系統應用和 Windows Store 應用而言,我們也可以從 Windows 設置 > 默認應用 > 按協議指定默認應用(Windows 11 改名為 按鏈接類型指定默認應用)界面尋找已經被註冊的各類 URI Schemes。不過此面板不會顯示一些傳統應用。然而試圖查閱到一個可用的 URI 相對而言較為困難。URI 方案後的行為、查詢參數大部分情況下用於供開發者進行應用內跳轉,不會暴露給用戶。並且由於 安全問題,不少應用都限制瞭從外部直接調用程序功能。所幸 URIs 往往會兼顧多平臺的通用性,Windows、iOS、Android 系統上同一個應用的 URI Scheme 用法有可能是一樣的。要是不確定一個 URI Scheme 是否起作用,讀者在將它們寫入快捷方式之前,可以先使用資源管理器的地址欄做實驗,效果符合預期再行動也不遲。總結就能力而言,快捷方式顯然比不上腳本等手段。首先它的目標路徑隻能填一行,本文第二節雖然有用快捷方式執行多條命令的用例,但這顯然不如腳本來得優雅;其次,快捷方式是靜態的,想要為它加一些變量,例如打開 Obsidian 這一周的周志、用電報發送剪貼板內容,快捷方式實現起來就較為吃力,需要其他工具從旁輔助。然而其優勢也是很明顯的——用起來簡單方便。將目標寫好,和我們交互的就隻是一個帶箭頭的小圖標。我們可以雙擊;可以將它們放在開始菜單中用於檢索;還可以固定到任務欄,用 Windows + 數字鍵啟用。快捷方式本身也是一個文件,它們可以被保存、備份、遷移,隻要路徑正確就能成功運行。除瞭能用在快捷方式上,本文介紹的標識和 URI Schemes 也能用於 Windows 註冊表、AutoHotkey,JS 腳本等其他地方,因而第二、三節的小結部分或許還有本文主旨之外的參考價值。本文的意義僅在於提供應用的思路,揭示更多操作的可能性。真正適合自己的用法還需要讀者自行探索。


本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.xiaosb.com/beian/52061/