重建launch services数据库并清理残留.service/.workflow文件可解决90%右键菜单重复项问题;根源是launch services注册表混乱及卸载不彻底导致的同名app多路径注册。

右键菜单重复项和“打开方式”里一堆同名App,不是系统坏了,是Launch Services注册表混乱+残留服务文件没清干净。直接重建数据库+删掉无用.service和.workflow文件,90%的问题当场解决。
为什么“打开方式”里会出现Word (2)、Microsoft Word (复制)”
这是Launch Services缓存的App注册信息错乱导致的——比如你升级过Office、用不同方式(pkg / dmg / App Store)装过多个版本、或卸载不彻底,系统仍把旧路径当有效入口。它不报错,但点开可能打不开,或者打开的是错误版本。
关键点:lsregister 是 macOS 底层管理“打开方式”列表的工具,它读取 ~/Library/Preferences/com.apple.LaunchServices.plist 和各域(user/system/local)的注册数据。重复项本质是多个指向不同Bundle ID或路径的相同显示名被同时加载。
- 仅执行
killall Finder不会清理注册表,只是刷新UI -
-domain local覆盖用户级Launch Services(如Homebrew安装的App) -
-domain system涉及系统自带App(一般不用动,但重建时带上更彻底) -
-domain user必须包含,覆盖用户安装的第三方App注册项
执行lsregister重建前必须做的两件事
跳过这步直接跑命令,很可能几小时后重复项又回来了——因为残留的服务文件会在下次启动时重新注册。
- 检查并删除无用的
.service文件:打开访达,按Shift + Cmd + G,输入~/Library/Services/和/Library/Services/,逐个看文件名是否对应已卸载软件(例如CleanMyMac X Service.service、PDF Expert Quick Actions.service),确认后直接删 - 清理快捷指令生成的冗余项:进入
~/Library/Workflow Services/,删除名称重复、图标异常、或来源不明的.workflow文件;注意别动系统默认项(如New Document.workflow) - 删完务必执行
killall Finder或在活动监视器中强制退出Finder,否则新状态不生效
安全重建Launch Services数据库的终端命令
下面这行是当前macOS(12–14)验证有效的完整命令,兼顾清理隔离属性与全域能力:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
执行后没有进度条,等约90秒再操作。接着立即运行:
killall Finder
常见误区:
- 用旧路径
/System/Library/Frameworks/CoreServices.framework/Versions/A/.../lsregister在macOS 13+ 可能失效(符号链接已调整) - 漏掉
-domain system会导致部分系统级关联(如Quick Look插件)未刷新 - 不加
-r(rebuild)只重载,无法清除已失效注册项
哪些重复项重建也清不掉?得手动查注册源头
如果跑完上面所有步骤,“打开方式”里仍有两个一模一样的“VS Code”,但实际只有一个App存在,说明有第三方工具(如某些Shell扩展、旧版Homebrew Cask安装脚本、或非标准打包的App)绕过Launch Services,直接写入了 Info.plist 的 CFBundleDocumentTypes 或修改了UTI声明。
这时候要定位源头:
- 用
mdfind "kMDItemDisplayName == 'Visual Studio Code'"查所有VS Code相关路径 - 进每个疑似App包内,执行
plutil -p Contents/Info.plist | grep -A5 CFBundleDocumentTypes,看是否重复声明了同一UTI类型 - 检查
/Library/QuickLook/下是否有旧版QL插件残留(如PDFExpert.qlgenerator),它们也会干扰“打开方式”排序逻辑
这类问题不常见,但一旦出现,就得从App分发源头入手——不是系统问题,是某个安装包没遵循macOS文档类型注册规范。










