Mac OS X在哪里存储文件关联信息?


24

我知道有一个系统偏好设置窗格可以手动修改Mac OS X Leopard中的文件关联。但是,我很好奇Leopard实际在哪里存储这些信息?

我对更改它们的方法不感兴趣。我想知道存储这些映射的配置文件或数据库(例如Windows中的注册表)。


有些请用“ mac”和“ osx”重新标记(这些标记使用更广泛)
Thilo

对此进行了有关meta的讨论,但我不能断定哪个标签获胜。
Mehrdad Afshari

我认为决定获胜者的最佳方法是查看数字。在社交网站上,人气胜过分类法。
Thilo

另请参见:superuser.com/questions/17761/…(稍有不同,但可能也会有所帮助)。
乔纳森·莱夫勒

Answers:


12

抱歉,这个问题很旧,但是答案确实是错误的。

正如工具熊所说,道格·哈里斯(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.csstore501附加到-025后缀的用户ID(mine是)组成,这对于Snow Leopard是唯一的。(在OS X的每个版本中,Apple都会更改用于防止在OS X的不同版本之间出现兼容性问题的区分性后缀。您会注意到Leopard使用了-023)。Lion正在使用 -034后缀。


2
El Capitan 10.11.4:$TMPDIR/../0/com.apple.LaunchServices-134$(id -u).csstore
抢劫Mayoff '16

但是这些是临时文件夹。那些不能放在集中存储的位置。
Melab

1
@Melab:Mac系统上的每个应用程序都有一个描述其功能的Info.plist文件(developer.apple.com/library/mac/documentation/MacOSX/Conceptual/…)。Launch Services动态收集所有这些信息以创建上述数据库。如果删除了数据库文件,Launch Services(特别是lsregister工具ss64.com/osx/lsregister.html)可以重新创建它。
NSGod

实际上,只是从路径上看,它看起来像存储在临时文件夹旁边..意思是“上一层楼”)。
SilverWolf-恢复莫妮卡

18

OS X使用“默认”系统-这是一篇不错的文章,其中包含许多示例。这些文件存储在〜/ Library / Preferences下,但是最好使用“默认值”命令进行操作,而不是直接编辑plists。

文件关联存储在com.apple.LaunchServices域下。在上面的链接中,可以使用以下命令查看列表:

defaults read com.apple.LaunchServices | grep -v LSBundleLocator

有关启动服务的详细信息,请参见《 Apple的启动服务编程指南》。


15

@道格·哈里斯的答案仅部分正确。默认系统存储您对文件关联的本地添加或替代。但是,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'
    ...

1
仅供参考-bash: lsregister: command not found,小牛
Slipp D. Thompson 2014年

2
@ SlippD.Thompson仔细查看下一行,在其中指定了路径。
德米特里·金茨堡2014年

2

十分简单!只是它不在最明显的地方:

  • 右键单击要更改其关联的文件,然后选择“ 获取信息 ”(或选择并单击Command+I
  • 转到“ 打开方式 ”(您可能需要单击它旁边的箭头以展开它),然后从下拉框中选择另一个程序。
  • 单击“ 全部更改... ”按钮,以更改系统上具有相同扩展名的所有文件的此文件关联。

在此处输入图片说明

您也可以外出安装RCDefaultApp prefpane,以在一处修改所有文件关联。


3
你读过这个问题吗?它与OS X在何处存储信息有关,而不是与如何更改关联有关。
约尼克,

1
是的,但是知道如何更改它们也会有所帮助。像这样对我有所帮助... @joshhunt:也许您明确地将“获取信息”的内容放在选择了文件的Finder中。(只需要撤消一个应用程序即可抓取另一个文件的程序,这便有所帮助。)
Jonathan Leffler 2009年

@LauriRanta,您说的很对,事实上,在我发布该帖子后,我想删除它,但是找不到它!
ocodo 2012年

-3

~/Library/Preferences/com.apple.LaunchServices.plist

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.