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数据库中的一样. 如果要求确认,请输入管理员的密码.
   参见注释 [1] [2]

3. 重新启动机器.
4. 登录到有问题的账户.
5. 检查问题是否依然存在, 如果是:
   1> 删除在Home > Library > Preferences文件夹中的com.apple.LaunchServices.plist文件.
   参见注释 [3]
   2> 重复步骤1-5

Panther的解决方案:
1. 退出所有的应用程序.
2. 把com.apple.LaunchServices.6B.csstore文件删除, 它在Macintosh HD > Library > Caches文件夹中, 如果要求确认,请输入管理员的密码.
   参见注释 [1]
3. 重新启动机器.
4. 登录到有问题的账户.
5. 检查问题是否依然存在, 如果是:
   1> 删除在Home > Library > Preferences文件夹中的com.apple.LaunchServices.plist文件.
   参见注释 [3]
   2> 重复步骤1-5

Jaguar的解决方案:
1. 退出所有的应用程序.
2. 删除在有问题账户的Home > Library > Preferences文件夹中的com.apple.LaunchServices.plist文件.
   参见注释[3]
3. 删除在有问题账户的Home > Library > Caches文件夹中的com.apple.LaunchServices.UserCache.csstore文件.

4. 重新启动机器.
5. 登录到有问题的账户.
6. 清空废纸篓.

Related Links:
   Launch Services COncepts and Tasks.
   Launch Services Reference.

注释:
[1] 当你第一次双击一个文档从而建立文档和应用程序的匹配时, 系统基于安全提示用户的, 而所有的匹配记录都存储在缓冲文件中, 这一步就是要删除它.

[2] 第一个建立的Mac用户的uid一般是501, 第二个是502, 以此类推. 所以对于第一个用户uid的文件名是:com.apple.LaunchServices-0140501.csstore. 你可以通过下面方法得到一个用户的uid:
    1. 运行位于Macintosh HD > Applications > Utilities文件夹的NetInfo Manager程序.
    2. 在中间栏中选择Users.
    3. 在右边栏中选择要查看的用户名.
    4. 在下边可以找到uid的值了.

[3] 这一步讲初始设置所有的特殊文件和程序的匹配关系. 例如, 如果你设置PDFs文件和Adobe Acrobat匹配,而不是默认的Preview, 那么重置以后,又要匹配到Preview打开, 直到你再次设定.

--------------------
后记:
注释
[2]中,完全可以更简单地,使用Terminal命令行取得一个用户的UID或GID,很简单在Terminal里面输入:
id [Username]
其中把
[Username]替换成该用户的登录名就可以了.

--------------------
更新: (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. 在上面的注释[2]中,在shell script 中使用这样的格式就可以处理了:
  
/Library/Caches/com.apple.LaunchServices-014{0,${UID}}.csstore

4. 对于Leopard系统对应的文件应该是:
   /Library/Caches/com.apple.LaunchServices-023{0,${UID}}.csstore
原文链接: http://blog.csdn.net/afatgoat/article/details/3298695

转载于:https://my.oschina.net/junwong/blog/46462

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值