Jak wyświetlić listę wszystkich dostępnych kluczy .plist w określonej aplikacji domeny domyślnie?

17

Chcę poznać wszystkie klucze (listę właściwości), które są dostępne w niektórych aplikacjach domeny, na przykład mogę wyświetlić listę dostępnych kluczy com.apple.dock, wprowadzając to polecenie:

$ defaults read com.apple.dock

ale w jakiś sposób wynik tego polecenia pokazał tylko aktywny klucz listy właściwości, a jednak nie wszystkie dostępne klucze dla com.apple.dockwymienionych tam.

Czy ktoś może mi w tym pomóc?

wongacid
źródło
Nie masz nic przeciwko, jeśli przeredaguję to. Pytasz o narzędzie, które zapisuje wiadomości, a nie o to, jak odtworzyć program, który czyta wiadomości. Domyślnie program ignoruje wszystko, co wstawiłeś jako domyślne, czego nie spodziewał się zobaczyć. Możesz osadzić szekspira we wstępach wyszukiwarki, a na szczęście nic nie zrobiłby, o ile byłby prawidłowym plikiem plist XML po zapisaniu do pliku.
bmike
@bike Zdaję sobie z tego sprawę. To, co mnie zainteresowało, to lista wartości, z których aplikacja faktycznie korzysta. Pomyślałem, że gdzieś w głównym pliku konfiguracyjnym aplikacji może być ukryta pełna lista.
awesomo
Lista wartości istnieje tylko w kodzie źródłowym każdego programu. Czy masz jeden program, który Cię interesuje? Po skompilowaniu klucze ciągów w pliku binarnym są kodowane i wszystkie mieszane z innymi ciągami. Nic nie stoi na przeszkodzie, aby autor programu dodał listę, ponieważ można go łatwo dodać do folderu Contents / Resources, który istnieje w dowolnej aplikacji. W praktyce nie jest to powszechnie robione.
bmike
Możesz także różnicować dane wyjściowe w defaults readcelu znalezienia kluczy do normalnych preferencji lub użyć CFPreferencesCopyValuemetody w gdb. Zobacz Jak poznać więcej domyślnych poprawek zapisu w OS X? - Super użytkownik .
Lri,
Możesz również różnicować dane wyjściowe, defaults readaby znaleźć klucze do normalnych preferencji, uruchamiać ciągi na plikach binarnych frameworków lub użyć CFPreferencesCopyValuemetody w gdb. Zobacz Jak poznać więcej domyślnych poprawek zapisu w OS X? - Super użytkownik .
Lri,

Odpowiedzi:

7

Nie jest to trywialne zadanie, jeśli dobrze pamiętam, ludzie uruchamiają stringsnarzędzie w wierszu polecenia względem aplikacji i szukają rzeczy, które pasują do struktury podobnej do com.domain.FeatureName. (com.apple.iTunes, ch.cyberduck.CyberDuck, com.panic.Coda itp.)

Prawdopodobnie najłatwiejszym sposobem zarządzania tymi przesłonięciami jest okienko Preferencji systemowych o nazwie Secrets . Użycie tego powoduje zainstalowanie okienka preferencji w Preferencjach systemowych i daje interfejs do wybierania aplikacji i zmiany ich ustawień zgodnie z konkretnymi preferencjami.

Jason Salaz
źródło
Bardzo bym chciał, gdybyś tam również odpowiedział - apple.stackexchange.com/questions/19899/... - łańcuchy to najbardziej przyjazny sposób na próbę odwrotnej inżynierii kluczy dla użytkowników końcowych.
bmike
6

Znaleziono witrynę poświęconą domyślnym poleceniom zapisu w systemie Mac OS X, niektórym przydatnym poleceniom dla systemu Mac OS X Lion i Mountain Lion.

http://www.defaults-write.com

Brandon West
źródło
5

Naprawdę nie ma pojęcia „dostępnych” kluczy. Aplikacja może dowolnie czytać dowolne klucze. Większość osób odkrywa „tajne” klucze domyślne, stringsprzeglądając plik binarny aplikacji i sprawdzając, jakie klucze spróbuje odczytać.

jtbandes
źródło
tak, właśnie to chcę znaleźć, „tajne” klucze domyślne. Czy możesz wyjaśnić więcej na temat „tajnego” klucza? Jest to bardzo pomocne, jeśli istnieje jakiś przykład. Dziękuję Ci bardzo.
wongacid
1
Wiele dobrze znanych przykładów znajduje się na stronie secrets.blacktree.com
jtbandes
Dzięki!! daj mi znać, jeśli masz inny świetny link do tego rodzaju informacji. :-)
wongacid
4

Większość ludzi chce tutaj robić wszystko za pomocą wiersza poleceń, ale mam bardziej praktyczną sugestię.

Te dwa programy opisane poniżej wymieniają wiele znanych, dostosowywanych z linii poleceń funkcji aplikacji Mac OS X, posortowanych według aplikacji lub funkcji. Zaletą jest to, że lista funkcji jest dla Ciebie; nie musisz szukać w Google, aby dowiedzieć się, jakie są funkcje i sekwencje wiersza poleceń potrzebne do zmodyfikowania każdej z nich.

Istnieje kilka darmowych lub komercyjnych aplikacji, które zapewniają graficzny interfejs użytkownika z listą większości wszystkich opcji dostosowywania, które można modyfikować za pomocą terminala. Aby aktywować dowolną z tych funkcji, korzystając z tych programów, które opisuję, robisz to w interfejsie GUI aplikacji i nie musisz wcale używać wiersza poleceń. Nie musisz nic wiedzieć defaults writeani .plistplików.

Dwie z tych aplikacji to:

TinkerTool

który jest bezpłatny, i

MacPilot

która została właśnie zaktualizowana o nowe funkcje Lion i kosztuje 20,00 USD.

Są to programy, które posiadam i których używam.

Pobierz bezpłatną TinkerTool i wersję próbną MacPilota, a następnie klikaj wszystkie karty, aby zobaczyć wszystkie niezliczone funkcje, które możesz dostosować. Jest ich zbyt wiele, by je tutaj wymienić.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Aktualizacja

Deweloper Frederik Wiker wydał darmowe aplikacje (zaakceptowane darowizny) do tworzenia domyślnych ustawień dostosowywania specyficznych dla Lion i Mountain Lion; wiele z nich działa również dobrze dla Mavericks (Mac OS X 10.9).

Pobierz je i zobacz, jakie dostosowania są dla Ciebie dostępne.

Lion Tweaks

Mountain Tweaks

wprowadź opis zdjęcia tutaj


źródło
Dziękuję za rekomendacje. Doceniam alternatywne podejście.
awesomo
Powinieneś naprawdę zaakceptować odpowiedź na to pytanie / Pszenica. Przed nami moje lata świetlne.
Jason Salaz,
3

Być może dość długie wyjaśnienie, w jaki sposób działają rzeczy, może wyjaśnić twoje i innych poszukiwania tych „ukrytych” preferencji.

Większość aplikacji odczyta swoje pliki preferencji po uruchomieniu, a defaultsnarzędzie istnieje, aby upewnić się, że pliki preferencji mają prawidłową strukturę i nie zawierają błędów składniowych. (Pozwala także systemowi zmienić sposób przechowywania kluczy, a ludzie nie muszą znać szczegółów implementacji i mogą używać polecenia defaults do wykonywania wszystkich odczytów i zapisów).

Angielski styl i przewodniki gramatyczne zapewniają, że słowa, które tu piszę, są znaczące dla przeciętnego anglojęzycznego, a ujednolicenie domyślnego systemu ustala ramy, aby każdy wiedział, czego się spodziewać. Formatowanie listy preferencji jest znacznie bardziej sztywne i matematyczne niż ludzki język, ale pojęcia są podobne.

Domyślny system użytkownika Mac OS X to magazyn wartości klucza (lub baza danych, jeśli wolisz).

Możesz zapisać cokolwiek w tych sklepach z kluczowymi wartościami preferencji, sonetem Szekspira, liczbami, listą zakupów. Jeśli program jest zakodowany w poszukiwaniu określonego klucza, odczyta przechowywaną wartość. Jeśli nie szuka tego klucza - jego wartość pozostaje niewykorzystana i nieprzeczytana.

W ten sposób dowiesz się, jakich wartości może szukać konkretny program podczas uruchamiania. Sprowadza się to do tego, że musisz znać wartość lub poddać inżynierii wstecznej program.

Istnieje wiele narzędzi do wyszukiwania programu i próbowania dowiedzieć się, jakie łańcuchy (klucze) są osadzone, takich jak stringsi dbx / lldb, a także łączenia we własnej bibliotece w celu zrzucenia wewnętrznej struktury określonego programu.

W praktyce niektóre rzeczy, które są potrzebne do testowania, są dodawane w ten „ukryty” sposób, abyś nie mógł patrzeć na panel preferencji programu i zobaczyć tych nowych funkcji, które nie są gotowe do szerokiego zastosowania. W pewnym sensie uzyskanie pełnej listy wcale nie jest proste, chyba że autor tego programu opublikuje kod źródłowy lub w inny sposób udokumentuje te ustawienia publicznie.

Gdy czytasz domyślny sklep dla konkretnej aplikacji - po prostu czytasz „książkę”, która została napisana podczas tworzenia aplikacji, jest to domyślny zestaw lub ustawienia dostarczone z Mac OS X. Dlatego nie otrzymujesz wyczerpującego lista rzeczy, które można realistycznie zmienić za pomocą tej aplikacji.

bmike
źródło
2

O ile wiem, aplikacja będzie przechowywać nowy klucz tylko wtedy, gdy różni się od domyślnych, przynajmniej tak robią moje aplikacje. Nie jest to coś, co można łatwo kontrolować, ponieważ jest to część frameworku User Defaults, ponieważ aplikacja informuje użytkownika tylko to, czego potrzebuje, a resztą zajmuje się. Niestety nie sądzę, że informacje, których szukasz, będą łatwo dostępne. Może być miło mieć do tego dostęp.

Fred
źródło