文件快捷方式

在電腦領域，捷徑是一種使用者界面中的句柄，它允許用戶找到或使用位於另一個目錄或文件夾的一個文件或資源。

快捷方式通常被實現為一個包含目標URI或GUID的小文件，以此指向一個對象或快捷方式所代表的目標程序文件。快捷方式還可能額外指定命令行參數，從而在運行它時將所定參數傳遞到目標程序。每個快捷方式都有其自身的圖標。快捷方式最常見的地方就是桌面，以及應用啟動面板（例如Microsoft Windows開始菜單）或桌面環境的主菜單。在麥金塔（Macintosh）作業系統中等效的功能被稱為「別名」，在類UNIX系統中則有符號連結可用。

## 實現

### Microsoft Windows

文件快捷方式是在Windows 95中被引入。Microsoft Windows使用`.lnk`作為本地文件快捷方式的文件擴展名，使用`.url`作為遠程文件（例如遠端網頁）快捷方式的文件擴展名。默認情況下，一個箭頭會覆蓋圖標以標識性質，並且快捷方式不顯示文件擴展名（擴展名在Windows資源管理器中會始終隱藏，即便在「文件類型」選項中取消選中「隱藏已知文件類型的擴展名」也不會顯示。它由`NeverShowExt`選項控制，位於註冊表的 `HKEY_CLASSES_ROOT\lnkfile`。`IsShortcut`選項則控制顯示箭頭）。快捷方式文件可以以最小化或最大化的窗口狀態啟動程序，只要那個程序支持該窗口狀態。

Microsoft Windows的`.lnk`文件是作為Windows Explorer的擴展，而不是文件系統的擴展。作為外殼擴展，`.lnk`文件只能在Windows Explorer中指向文件，不過除了作為本機檔案（或 GUID）的快捷方式之外，在Windows Explorer中還有其他用途，例如：`.lnk`可以附加執行檔的後設資料，包括目標應用程式的原始路徑；或是用於連結到特定的內容，例如打開特定的網頁或執行特定的命令，駭客可能會藉此下載惡意軟體，或是執行惡意腳本。

雖然快捷方式被創建時指向了特定文件或文件夾，但如果目標被移動到其他位置，快捷方式會因此損壞。當打開一個目標不存在的快捷方式時，Explorer將嘗試修復該快捷方式。Windows 9x的Windows用一個簡單的搜索算法來修復損壞的快捷方式。在以Windows NT為基礎的作業系統且NTFS的文件系統中，目標對象的唯一標識符會存儲在快捷方式中，並且Windows可以使用「Distributed Link Tracking」服務跟蹤快捷方式的目標，因此在快捷方式的目標被移動到另一個驅動器時，快捷方式的目標可以被靜默更新。Windows 2000中引入的Windows Installer帶來了另一種特殊類型的快捷方式，被稱為Advertised shortcuts。

Windows中的文件快捷方式可以存儲一個不同於目標路徑的工作目錄，其中可以使用環境變量。在快捷方式的屬性中還可定義一個快捷鍵，但生效前提是快捷方式位於開始選單文件夾、任務欄固定的圖標，或者放在桌面。從Windows 2000起，文件快捷方式可以存儲備註，備註將在滑鼠懸停在該快捷方式上時顯示。

一般來說，雙擊快捷方式的效果與雙擊所指向的應用程式或文檔的效果相同，但Windows的快捷方式包含獨立的目標和「起始」目錄。如果使用未輸入「起始目錄」的快捷方式，某些應用程式可能會產生「缺少DLL」錯誤。

在Windows Vista及更高的系統中可創建文件系統連結，這提供類似符號連結的功能，但它是文件系統的一個特性。Windows的快捷方式是獨立於文件系統的文件，通過Explorer生效。

從Windows 7開始，一些快捷方式還存儲「應用程式使用者模型ID」（AppUserModelID）。不同於目標命令行，AppUserModelIDs可以用來直接啟動應用程式。AppUserModelID被某些桌面程序和所有WinRT模型的應用程式用於啟動。

儘管Windows未提供方便的工具來創建，但Explorer支持「文件夾連結」和「外殼連結文件夾」：一個設為「系統」屬性的文件夾，包含隱藏的「desktop.ini」（文件夾定製）文件，告知Explorer查找同目錄下的「target.lnk」文件，它指向另一個文件夾。當在Explorer中查看時，外殼連結文件夾會呈現目標文件夾的內容——也就是說，定製後的文件夾變成了一個快捷方式。此技術被微軟Windows用於如WebDAV文件夾的項目。不過，Windows Vista及更高版本中提供的「文件系統連結」使「外殼連結文件夾」不再那麼實用。

### Unix

某些面向類Unix作業系統的桌面環境（如GNOME、KDE）提供freedesktop.org `.desktop`文件。這可以用來指向本地或遠程文件、文件夾和應用程式。在Unix系統上也可以創建符號連結，能做到類似的功能。

#### 支持桌面快捷方式的X窗口管理器的列表

下面是部分支持在桌面上使用快捷方式圖標的窗口管理器：

- 4Dwm
- aewm++
- cwm
- dwm
- epiwm
- fpcbol
- ion2
- KWin
- Metacity
- Window Maker

### Mac

雖然在Unix子系統中可以創建符號連結，麥金塔（Macintosh）沒有對快捷方式的擴展。擴展名.webloc被用於Safari瀏覽器中的網際網路URL。Macintosh System 7至Mac OS 9中的「替身 (Mac OS)」採用使用斜體文件名標識以區分。在Mac OS 8及之後的版本中則添加了一個稱為「替身箭頭」的標識，它是一個在白色小正方形上的黑色箭頭，類似Microsoft Windows中的快捷方式。在Mac OS X中，替身的文件名不會被斜體，但仍有箭頭標識。此外，替身會保留到對象的動態引用，並且即使在遠程伺服器上調用文件時也不需要指定替身。

## 歷史

要在早期的圖形使用者界面中執行一個應用程式或呈現一個電腦檔案，使用者必須點擊點擊文件的實際所在位置，例如應用程式的可執行文件。將執行一個與可執行文件相關聯的指令的圖標與該文件本身分離的概念使得圖標可以按照功能或任務而不是文件存放的物理結構來分組。這種概念最早在1991年金士頓大學出版的研究論文「窗口化圖形使用者界面的面向任務前端」中描述，並在同年根據學術/商業技術共享協議下提供給微軟和Xerox EuroPARC。這項研究的簡化形式在1991年被併入System 7，在四年後被併入Windows 95。

## 外部連結

- "Shell Link (.LNK) Binary File Format" from Microsoft（舊版本）
- IShellLink interface for accessing .lnk files in the Windows API
- "Shellify" Shellify is a 100% managed .NET implementation of the Microsoft Shell Link (.LNK) Binary File Format for accessing .lnk files without the Windows API
- Perl library

## 基本資料

- 日語原文：lnk
- 擴展名：`.lnk`、`.url`、`.cda`
- mime：`application/x-ms-shortcut`
- 所有者：微軟
- 類型：檔案捷徑
- 日語原文：Desktop Entry
- 擴展名：`.desktop`
- mime：`text/plain`
- 所有者：freedesktop.org
- 擴展自：INI檔案