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

mmx*_*mmx 27 mac osx-leopard file-association macos

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

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

Dou*_*ris 22

OS X 使用“默认”系统——这是一篇包含大量示例的好文章。这些文件存储在 ~/Library/Preferences 下,但最好使用“defaults”命令进行操作,而不是直接编辑 plist。

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

defaults read com.apple.LaunchServices | grep -v LSBundleLocator
Run Code Online (Sandbox Code Playgroud)

有关 Launch Services 的更多信息,可以在 Apple 的Launch Services Programming Guide 中找到


too*_*r74 20

@Doug Harris 的回答只是部分正确。默认系统存储您对文件关联的本地添加或覆盖。但是,OS X 带有一些默认的、系统范围的关联。

如果您运行,lsregister -dump您将看到 Launch Services 调用的内容CoreTypes以及它找到的应用程序提供的关联。

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -dump
Run Code Online (Sandbox Code Playgroud)

我还没有彻底扫描输出。该转储中可能还有其他来源,但这些类型中的大量来自/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'
    ...
Run Code Online (Sandbox Code Playgroud)

  • @SlippD.Thompson 仔细查看下一行,路径在那里指定。 (3认同)

NSG*_*God 14

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

正如 toolbear 所提到的,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(我的是)组成,这是 Snow Leopard 独有的。(在 OS X 的每个版本中,Apple 倾向于更改用于防止不同版本 OS X 之间的兼容性问题的区分后缀。您会注意到 Leopard 使用了-023)。狮子正在使用 -034后缀。

  • El Capitan 10.11.4:`$TMPDIR/../0/com.apple.LaunchServices-134$(id -u).csstore` (2认同)