我知道有一个系统偏好设置窗格可以手动修改Mac OS X Leopard中的文件关联。但是,我很好奇Leopard实际在哪里存储这些信息?
我对更改它们的方法不感兴趣。我想知道存储这些映射的配置文件或数据库(例如Windows中的注册表)。
我知道有一个系统偏好设置窗格可以手动修改Mac OS X Leopard中的文件关联。但是,我很好奇Leopard实际在哪里存储这些信息?
我对更改它们的方法不感兴趣。我想知道存储这些映射的配置文件或数据库(例如Windows中的注册表)。
Answers:
抱歉,这个问题很旧,但是答案确实是错误的。
正如工具熊所说,道格·哈里斯(Doug Harris)的回答仅部分正确。
该发射服务数据库文件,这就是所有的信息,所有已知的应用和类型的,他们可以处理文件存储,位于以下位置:
狮子:
/private/var/folders/**/**/-Caches-/com.apple.LaunchServices-034501.csstore
雪豹:
/private/var/folders/**/**/-Caches-/com.apple.LaunchServices-025501.csstore
豹:
/Library/Caches/com.apple.LaunchServices-023501.csstore
该/private/var/folders/
文件夹是每个用户的“安全”缓存和临时文件夹的存储位置。上面显示的路径中的**将类似于/dl/dlXWtS5WH9SNboPxxrDIyE+++TI/
或其他晦涩的字符序列,以防止猜测。
请注意,该名称com.apple.LaunchServices-025501.csstore
由501
附加到-025
后缀的用户ID(mine是)组成,这对于Snow Leopard是唯一的。(在OS X的每个版本中,Apple都会更改用于防止在OS X的不同版本之间出现兼容性问题的区分性后缀。您会注意到Leopard使用了-023
)。Lion正在使用 -034
后缀。
$TMPDIR/../0/com.apple.LaunchServices-134$(id -u).csstore
Info.plist
文件(developer.apple.com/library/mac/documentation/MacOSX/Conceptual/…)。Launch Services动态收集所有这些信息以创建上述数据库。如果删除了数据库文件,Launch Services(特别是lsregister
工具ss64.com/osx/lsregister.html)可以重新创建它。
..
意思是“上一层楼”)。
OS X使用“默认”系统-这是一篇不错的文章,其中包含许多示例。这些文件存储在〜/ Library / Preferences下,但是最好使用“默认值”命令进行操作,而不是直接编辑plists。
文件关联存储在com.apple.LaunchServices域下。在上面的链接中,可以使用以下命令查看列表:
defaults read com.apple.LaunchServices | grep -v LSBundleLocator
有关启动服务的详细信息,请参见《 Apple的启动服务编程指南》。
@道格·哈里斯的答案仅部分正确。默认系统存储您对文件关联的本地添加或替代。但是,OS X带有一些默认的系统范围的关联。
如果运行,则将lsregister -dump
看到Launch Services调用的内容CoreTypes
以及找到的应用程序提供的关联。
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -dump
我还没有详尽地扫描输出。该转储中可能还指示了其他来源,但其中许多类型来自/System/Library/CoreServices/CoreTypes.bundle
。在其中可能会列举类型的纯文本文件或plist文件。我相信这些关联来自在已知应用程序位置中扫描* .app的内容。这是Launch Services了解TextWrangler是许多文件类型的编辑器的地方:
--------------------------------------------------------------------------------
bundle id: 10928
path: /Applications/TextWrangler.app
name: TextWrangler
identifier: com.barebones.textwrangler (0x8000008d)
...
library items:
--------------------------------------------------------
claim id: 20216
name: TextWrangler text document
rank: Default
roles: Editor
flags: relative-icon-path
icon: Contents/Resources/TextWranglerTextDoc.icns
bindings: .a, .asm, .asp, .bashrc, .c, .c++, .cc, .cfm, .conf, .cp, .cpp, .cshrc, .css, .cxx, .equ, .f, .f77, .for, .ftn, .h, .h++, .hpp, .htm, .html, .inc, .j, .java, .js, .jsp, .log, .m, .mm, .p, .pas, .pch, .pch++, .php, .php3, .pl, .plist, .plx, .pm, .ppu, .r, .rb, .rez, .rhtml, .rss, .s, .sql, .shtm, .shtml, .tcl, .tcshrc, .text, .txt, .wml, .xhtml, .xml, .xsl, .xslt, .yaml, 'TEXT'
...
-bash: lsregister: command not found
,小牛
十分简单!只是它不在最明显的地方:
您也可以外出安装RCDefaultApp prefpane,以在一处修改所有文件关联。