Gdzie Mac OS X przechowuje informacje o powiązaniach plików?

24

Wiem, że istnieje panel preferencji systemowych do ręcznej modyfikacji skojarzeń plików w systemie Mac OS X Leopard. Jestem jednak ciekawy, gdzie Leopard przechowuje te informacje?

Nie interesują mnie metody ich zmiany. Chcę znać plik konfiguracyjny lub bazę danych (np. Rejestr w systemie Windows), w której przechowywane są te mapowania.

Mehrdad Afshari
źródło
niektórzy, proszę ponownie otaguj to słowami „mac” i „osx” (te tagi są częściej używane)
Thilo
Dyskutowano na temat meta na ten temat, ale nie mogłem stwierdzić, który tag wygrywa.
Mehrdad Afshari,
Myślę, że najlepszym sposobem na wyłonienie zwycięzcy jest spojrzenie na liczby. Popularność pokonuje taksonomię w serwisach społecznościowych.
Thilo,
Zobacz także: superuser.com/questions/17761/… (nieco inny, ale może być również pomocny).
Jonathan Leffler

Odpowiedzi:

12

Przepraszamy, to pytanie jest stare, ale odpowiedź jest naprawdę błędna.

Jak wspomniano o narzędziach, odpowiedź Douga Harrisa jest tylko częściowo poprawna.

Plik bazy danych usług uruchamiania , w którym przechowywane są wszystkie informacje dotyczące wszystkich znanych aplikacji i typów dokumentów, które mogą obsługiwać, znajduje się w następującej lokalizacji:

Lew:

/private/var/folders/**/**/-Caches-/com.apple.LaunchServices-034501.csstore

Pantera śnieżna:

/private/var/folders/**/**/-Caches-/com.apple.LaunchServices-025501.csstore

Lampart:

/Library/Caches/com.apple.LaunchServices-023501.csstore

W /private/var/folders/folderze przechowywane są „bezpieczne” pamięci podręczne i foldery tymczasowe dla każdego użytkownika. ** na ścieżce pokazanej powyżej będzie czymś w rodzaju /dl/dlXWtS5WH9SNboPxxrDIyE+++TI/lub inną nieznaną sekwencją znaków, aby zapobiec zgadywaniu.

Zauważ, że nazwa com.apple.LaunchServices-025501.csstoreskłada się z identyfikatora użytkownika (moje jest 501) dołączonego do -025sufiksu, który jest unikalny dla Snow Leopard. (W każdej wersji OS X Apple zazwyczaj zmienia sufiks wyróżniający używany, aby zapobiec problemom ze zgodnością między różnymi wersjami OS X. Zauważysz, że używał Leopard -023). Lion używa -034przyrostka.

NSGod
źródło
2
El Capitan 10.11.4:$TMPDIR/../0/com.apple.LaunchServices-134$(id -u).csstore
rob mayoff
Ale to są foldery tymczasowe. Nie mogą być tam, gdzie są przechowywane centralnie.
Melab
1
@Melab: Każda aplikacja w systemie Mac ma Info.plistplik ( developer.apple.com/library/mac/documentation/MacOSX/Conceptual/… ), który opisuje jego możliwości. Uruchom usługi zbiera wszystkie te informacje dynamicznie, aby utworzyć wspomnianą powyżej bazę danych. Jeśli plik bazy danych został usunięty, uruchom Usługi (w szczególności lsregisternarzędzie - ss64.com/osx/lsregister.html ) może je ponownie utworzyć.
NSGod
Właściwie, właśnie ze ścieżki, wygląda na to, że jest przechowywana obok folderów tymczasowych ( ..oznacza „idź wyżej”).
SilverWolf - Przywróć Monikę
18

OS X używa systemu „domyślnego” - oto fajny artykuł z dużą ilością przykładów. Pliki są przechowywane w ~ / Library / Preferences, ale najlepiej manipulować poleceniem „defaults” zamiast bezpośrednio edytować listy.

Powiązania plików są przechowywane w domenie com.apple.LaunchServices. Z powyższego linku możesz wyświetlić listę za pomocą tego polecenia:

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

O wiele więcej informacji na temat usług Launch Services można znaleźć w przewodniku Apple Launch Services Programming Guide

Doug Harris
źródło
15

Odpowiedź @Douga Harrisa jest tylko częściowo poprawna. Domyślny system przechowuje lokalne dodatki lub przesłonięcia skojarzeń plików. Jednak OS X ma pewne domyślne, systemowe powiązania.

Jeśli uruchomisz lsregister -dump, zobaczysz, co wywołuje usługi Launch Services CoreTypesi skojarzenia dostarczone przez znalezione aplikacje.

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -dump

Nie przeskanowałem wyczerpująco wyniku. Mogą być inne źródła wskazane na tym zrzucie, ale duża ich liczba pochodzi /System/Library/CoreServices/CoreTypes.bundle. Tam może być plik zwykłego tekstu lub listy plist, w którym typy są wyliczane. Uważam, że skojarzenia pochodzą ze skanowania zawartości * .app w znanych lokalizacjach aplikacji. Oto, gdzie Launch Services rozumie TextWrangler to edytor wielu typów plików:

--------------------------------------------------------------------------------
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'
    ...
toolbear74
źródło
1
FYI -bash: lsregister: command not foundw Mavericks
Slipp D. Thompson
2
@ SlippD.Thompson przyjrzyj się uważnie następnej linii, tam ścieżka jest podana.
Dmitry Ginzburg
2

Bułka z masłem! Po prostu nie jest w najbardziej oczywistym miejscu:

  • Kliknij prawym przyciskiem myszy plik, dla którego chcesz zmienić powiązanie, i wybierz „ Uzyskaj informacje ” (lub po prostu wybierz i naciśnij Command+I .
  • Przejdź do „ Otwiera za pomocą ” (może być konieczne kliknięcie strzałki obok niego, aby go rozwinąć) i wybierz inny program z menu rozwijanego.
  • Kliknij przycisk „ Zmień wszystko ... ”, aby zmienić to powiązanie plików dla wszystkich plików o tym samym rozszerzeniu w systemie.

wprowadź opis zdjęcia tutaj

Możesz także wyjść i zainstalować panel wstępny RCDefaultApp, aby zmodyfikować wszystkie powiązania plików w jednym miejscu.

Josh Hunt
źródło
3
Czy czytałeś pytanie? Chodziło o to, gdzie OS X przechowuje informacje, a nie jak zmieniać powiązania.
Jonik,
1
Tak, ale wiedza na temat ich zmiany również pomaga. To mi pomogło ... @joshhunt: może, jeśli wyraźnie zaznaczyłeś, że plik Get Info znajduje się w Finderze przy wybranym pliku. (Po prostu musiałem cofnąć jedną aplikację pobierającą pliki innej - to pomogło.)
Jonathan Leffler,
@LauriRanta masz absolutną rację, w rzeczywistości po tym, jak to opublikowałem, chciałem go usunąć, ale nie mogłem go znaleźć!
ocodo
-3

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

Nate
źródło