OS X中的Launch Services(启动服务)的问题解决
OS X中的Launch Services(启动服务)的问题解决OS X的Launch Services用于文档文件和相关的应用程序对应上, 他使用好几个文件来维护这些连接. 如果这些文件损坏了, 那么可能发生如下的问题:
. 当你双击打开一个文件的时候, OS X启动了错误的应用程序.
. 在Open With菜单中多次出现一个应用程序.
. 文件/文件夹或者其他对象的图标出现错误.
. Finder提示错误码:10660. 注意这个错误在要打开该文档的应用程序在Trash里面的时候也可能出现.
本文主要从Troubleshooting Mac OS X一书, 进行步骤处理Launch Services错误的时候, 一定要:
. 全面地阅读这个指引, 包括里面的注释.
. 对于不同版本的Mac OS X系统, 依照循序采取不同的步骤:
. Mac OS X 10.4 Tiger的解决方案
. Mac OS X 10.3 Panther的解决方案
. Mac OS X 10.2 Jaguar的解决方案
注: 请看后面的更新内容(2008-11-16)
Tiger的解决方案
1. 退出所有的应用程序.
2. 把下面的两个文件删除, 他们在Macintosh HD > Library > Caches文件夹中:
. com.apple.LaunchServices-0140.csstore
. com.apple.LaunchServices-0140nnn.csstore
其中,nnn是uid码,和受影响的用户的uid在Netinfo数据库中的一样. 如果要求确认,请输入管理员的密码.
参见注释和
3. 重新启动机器.
4. 登录到有问题的账户.
5. 检查问题是否依然存在, 如果是:
1> 删除在Home > Library > Preferences文件夹中的com.apple.LaunchServices.plist文件.
参见注释
2> 重复步骤1-5
Panther的解决方案:
1. 退出所有的应用程序.
2. 把com.apple.LaunchServices.6B.csstore文件删除, 它在Macintosh HD > Library > Caches文件夹中, 如果要求确认,请输入管理员的密码.
参见注释
3. 重新启动机器.
4. 登录到有问题的账户.
5. 检查问题是否依然存在, 如果是:
1> 删除在Home > Library > Preferences文件夹中的com.apple.LaunchServices.plist文件.
参见注释
2> 重复步骤1-5
Jaguar的解决方案:
1. 退出所有的应用程序.
2. 删除在有问题账户的Home > Library > Preferences文件夹中的com.apple.LaunchServices.plist文件.
参见注释
3. 删除在有问题账户的Home > Library > Caches文件夹中的com.apple.LaunchServices.UserCache.csstore文件.
4. 重新启动机器.
5. 登录到有问题的账户.
6. 清空废纸篓.
Related Links:
Launch Services COncepts and Tasks.
Launch Services Reference.
注释:
当你第一次双击一个文档从而建立文档和应用程序的匹配时, 系统基于安全提示用户的, 而所有的匹配记录都存储在缓冲文件中, 这一步就是要删除它.
第一个建立的Mac用户的uid一般是501, 第二个是502, 以此类推. 所以对于第一个用户uid的文件名是:com.apple.LaunchServices-0140501.csstore. 你可以通过下面方法得到一个用户的uid:
1. 运行位于Macintosh HD > Applications > Utilities文件夹的NetInfo Manager程序.
2. 在中间栏中选择Users.
3. 在右边栏中选择要查看的用户名.
4. 在下边可以找到uid的值了.
这一步讲初始设置所有的特殊文件和程序的匹配关系. 例如, 如果你设置PDFs文件和Adobe Acrobat匹配,而不是默认的Preview, 那么重置以后,又要匹配到Preview打开, 直到你再次设定.
--------------------
后记:
注释中,完全可以更简单地,使用Terminal命令行取得一个用户的UID或GID,很简单在Terminal里面输入:
id
其中把替换成该用户的登录名就可以了.
--------------------
更新: (2008-11-28)
严重错误,在2008-11-16的更新中的1和2中的命令颠倒了。
应该是,对于10.5的系统使用:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister-kill -r -domain local -domain system -domain user
而对于10.4和以前的系统使用:
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/LaunchServices.framework/Support/lsregister-kill -r -domain local -domain system -domain user
更新: (2008-11-16)
一个更简单和跟安全的方法找到了:
1. 对于Leopard 10.5
运行这个命令就可以重构启动服务数据库了
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/LaunchServices.framework/Support/lsregister-kill -r -domain local -domain system -domain user
2. 对于Tiger 10.4和以前的系统
运行这个命令:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister-kill -r -domain local -domain system -domain user
3. 在上面的注释中,在shell script 中使用这样的格式就可以处理了:
/Library/Caches/com.apple.LaunchServices-014{0,${UID}}.csstore
4. 对于Leopard系统对应的文件应该是:
/Library/Caches/com.apple.LaunchServices-023{0,${UID}}.csstore
页:
[1]