現象:右鍵「打開方式」出現大量重複、已刪除 App、舊版本項目
macOS **LaunchServices** 資料庫追蹤檔案類型與應用程式關聯。App 安裝/更新/移除/遷移時,資料庫可能殘留舊條目、重複條目、指向不存在路徑的條目。
核心解法:`lsregister` 重建資料庫
系統內建工具 `/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister` 可掃描應用程式資料夾、重建關聯資料庫。
方法一:終端機一鍵執行 (最快、最徹底)
# 完整重建:掃描本地、用戶、系統域,殺掉舊資料庫,重新註冊
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
# 執行後建議重啟 Finder (Option+右鍵 Dock Finder → 重新啟動) 或登出/重啟
**參數解析**:
- `-kill`:刪除現有資料庫重建。
- `-r`:遞迴掃描資料夾。
- `-domain local`:/Applications、/Applications/Utilities 等系統級應用資料夾。
- `-domain system`:/System/Applications 等系統內建 App。
- `-domain user`:~/Applications、~/Applications/Utilities 等用戶級應用資料夾。
方法二:製作 Automator 快速動作 / 服務 / 捷徑 — 一鍵點擊執行
- 開啟 **Automator** (自動操作) → 新增 「快速動作」** (Quick Action, macOS 10.14+) 或 「服務」** (舊版)。
- 頂部設定:「工作流程接收」選 **「無輸入」**、**「任何應用程式」**。
- 左側搜尋 「執行 Shell 腳本」** (Run Shell Script) → 拖入右側區域。
- Shell 選 `/bin/zsh` (或 `/bin/bash`),傳遞輸入選「作為引數」。
- 貼入腳本:
#!/bin/zsh
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
osascript -e 'display notification "LaunchServices 資料庫已重建,建議重新啟動 Finder 或登出登入。" with title "清理完成"'
- 儲存 (Command+S) 命名為「清理打開方式重複項」。
- **使用**:任意 App 選單列 → 服務 → 「清理打開方式重複項」 / 右鍵服務選單 / 觸控列 / 系統設定 → 鍵盤 → 鍵盤快捷鍵 → 服務 → 設定快捷鍵 (如 Control+Option+L)。



方法三:第三方工具 (圖形介面)
- OnyX (免費、經典維護工具) → 維護 → 重建 → 勾選「LaunchServices 資料庫」 → 執行。
- CleanMyMac X (付費) → 維護 → 重建 LaunchServices 資料庫。
- TinkerTool System (付費、深度系統維護)。
驗證成效
- 右鍵任意檔案 (如 `.txt`, `.pdf`, `.jpg`) → 「打開方式」。
- 列表應**無重複項、無已刪除 App、圖示正常、順序合理** (預設 App 在首位)。
原理補充:LaunchServices 資料庫結構
- 位置:`/var/folders/.../com.apple.LaunchServices-/` (用戶級)、`/Library/Caches/com.apple.LaunchServices-/` (系統級)。
- 內容:UTI (統一類型識別符) ↔ 應用程式 Bundle ID ↔ 路徑 ↔ 角色 (Viewer/Editor/Shell/All) 映射。
- 觸發更新:App 安裝至 /Applications、拖入 Dock、`lsregister`、系統更新。
總結
**「打開方式」混亂 = LaunchServices 資料庫髒了**。標準療程:lsregister -kill -r -domain local -domain system -domain user。製作成 Automator 快速動作/捷徑,未來每季執行一次,永遠保持右鍵選單乾淨利落。