Wie liste ich alle verfügbaren .plist-Schlüssel in einer bestimmten Domain-Anwendung standardmäßig auf?

17

Ich möchte alle Schlüssel (Eigenschaftsliste) kennen, die in einer bestimmten Domänenanwendung verfügbar sind. Als Beispiel könnte ich einen verfügbaren Schlüssel auflisten, indem ich com.apple.dockdiesen Befehl eingebe:

$ defaults read com.apple.dock

Aber irgendwie zeigte die Ausgabe dieses Befehls nur den aktiven Eigenschaftslistenschlüssel und noch nicht alle verfügbaren Schlüssel für com.apple.dockdie dort aufgelisteten.

Kann mir jemand dabei helfen?

wongacid
quelle
Stört es Sie, wenn ich das umformuliere? Sie fragen nach dem Tool, mit dem Nachrichten geschrieben werden, und nicht nach der Rückentwicklung des Programms, mit dem die Nachrichten gelesen werden. Standardmäßig ignoriert das Programm alle Standardeinstellungen, die nicht erwartet wurden. Sie könnten shakespeare in die Finder-Einstellungen einbetten, und es würde glücklich nichts tun, solange es gültiges plist-XML ist, das einmal in die Datei geschrieben wurde.
bmike
@bmike mir ist das klar. Was mich interessierte, war die Liste der Werte, die die Anwendung tatsächlich verwendet. Ich dachte, dass es eine vollständige Liste geben könnte, die irgendwo in einer Master-Konfigurationsdatei in Apps versteckt ist.
Awesomo
Die Werteliste existiert nur im Quellcode für jedes Programm. Haben Sie ein Programm, an dem Sie interessiert sind? Sobald sie kompiliert sind, werden die Zeichenfolgenschlüssel in der Binärdatei codiert und mit den anderen Zeichenfolgen verwechselt. Nichts hindert den Autor eines Programms daran, eine Liste aufzunehmen, da diese leicht zum Ordner "Contents / Resources" hinzugefügt werden kann, der in einer bestimmten Anwendung vorhanden ist. In der Praxis ist dies nicht weit verbreitet.
bmike
Sie können auch die Ausgabe von unterscheiden defaults read, um die Schlüssel für normale Einstellungen zu finden, oder die CFPreferencesCopyValueMethode in gdb verwenden. Weitere Informationen finden Sie unter So untersuchen Sie weitere Standardeinstellungen: Schreiben von Optimierungen unter OS X - Superuser .
Lri
Sie können auch die Ausgabe von variieren defaults read, um die Schlüssel für normale Einstellungen zu finden, Zeichenfolgen auf den Binärdateien von Frameworks auszuführen oder die CFPreferencesCopyValueMethode in gdb zu verwenden. Weitere Informationen finden Sie unter So untersuchen Sie weitere Standardeinstellungen: Schreiben von Optimierungen unter OS X - Superuser .
Lri

Antworten:

7

Dies ist keine triviale Aufgabe, wenn ich mich stringsrecht erinnere, dass Benutzer das Dienstprogramm über die Befehlszeile für eine Anwendung ausführen und nach Dingen suchen, die einer Struktur ähnlich wie com.domain.FeatureName entsprechen. (com.apple.iTunes, ch.cyberduck.CyberDuck, com.panic.Coda, etc.)

Der wahrscheinlich einfachste Weg, diese Außerkraftsetzungen zu verwalten, ist ein Systemeinstellungsfenster mit dem Namen Secrets . Bei Verwendung dieser Option wird ein Einstellungsbereich in den Systemeinstellungen installiert, und Sie erhalten eine Oberfläche, über die Sie eine Anwendung auswählen und deren Einstellungen an Ihre speziellen Anforderungen anpassen können.

Jason Salaz
quelle
Ich würde es begrüßen, wenn Sie dies auch dort beantworten würden - apple.stackexchange.com/questions/19899/… - strings ist die freundlichste Möglichkeit, dieses Reverse Engineering von Schlüsseln für Endbenutzer durchzuführen .
bmike
6

Wir haben eine Website gefunden, die diesen Mac OS X-Standard-Schreibbefehlen gewidmet ist, einige nützliche Befehle für Mac OS X Lion und Mountain Lion.

http://www.defaults-write.com

Brandon West
quelle
5

Es gibt wirklich keine Vorstellung von "verfügbaren" Schlüsseln. Die Anwendung kann beliebige Schlüssel lesen. Die meisten Benutzer entdecken "geheime" Standardschlüssel, indem sie stringsin der Binärdatei der Anwendung nachsehen, welche Schlüssel gelesen werden sollen.

jtbandes
quelle
Ja, genau das möchte ich finden, "geheime" Standardschlüssel. Könnten Sie den "geheimen" Schlüssel näher erläutern? Es ist sehr hilfreich, wenn es ein Beispiel gibt. Vielen Dank.
Wongacid
1
Viele bekannte Beispiele finden Sie unter secrets.blacktree.com
jtbandes
Vielen Dank!! Lassen Sie mich wissen, ob Sie einen anderen tollen Link zu dieser Art von Informationen hatten. :-)
wongacid
4

Die meisten Leute hier wollen alles über die Kommandozeile machen, aber ich habe einen praktischeren Vorschlag.

Diese beiden nachfolgend beschriebenen Programme listen eine Vielzahl der bekannten, über die Befehlszeile anpassbaren Funktionen von Mac OS X-Anwendungen auf, sortiert nach Anwendung oder Funktion. Der Vorteil ist, dass die Liste der Funktionen für Sie bereitgestellt wird. Sie müssen Google nicht durchsuchen, um herauszufinden, welche Funktionen und Befehlszeilensequenzen zum Ändern der einzelnen Funktionen erforderlich sind.

Es gibt verschiedene Freeware- oder kommerzielle Anwendungen, die eine grafische Benutzeroberfläche bieten, in der die meisten Anpassungsoptionen aufgelistet sind, die über das Terminal geändert werden können. Um eine dieser Funktionen zu aktivieren, verwenden Sie diese von mir beschriebenen Programme in der Benutzeroberfläche der Anwendung, und Sie müssen die Befehlszeile überhaupt nicht verwenden. Sie müssen nichts über defaults writeoder .plistDateien wissen .

Zwei dieser Apps sind:

TinkerTool

das ist kostenlos, und

MacPilot

Das Programm wurde gerade mit neuen Lion-Funktionen aktualisiert und kostet 20,00 US-Dollar.

Dies sind Programme, die ich besitze und benutze.

Laden Sie das kostenlose TinkerTool und die Testversion von MacPilot herunter und klicken Sie sich durch alle Registerkarten, um alle unzähligen Funktionen anzuzeigen, die Sie anpassen können. Es gibt zu viele, um sie hier aufzulisten.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Aktualisieren

Der Entwickler Frederik Wiker hat Freeware-Apps veröffentlicht (Spenden werden akzeptiert), mit denen Standardanpassungen für Lion und Mountain Lion erstellt werden können. Viele von ihnen funktionieren auch gut für Mavericks (Mac OS X 10.9).

Laden Sie diese herunter und sehen Sie, welche Anpassungen für Sie verfügbar sind.

Lion Tweaks

Berg Tweaks

Bildbeschreibung hier eingeben


quelle
Danke für die Empfehlungen. Ich schätze den alternativen Ansatz.
Awesomo
Sie sollten diese / Wheats Antwort wirklich akzeptieren. Es sind Lichtjahre vor mir.
Jason Salaz
3

Vielleicht könnte eine ziemlich lange Erklärung, wie die Dinge funktionieren, Ihre und die Suche nach diesen "verborgenen" Präferenzen erleichtern.

Die meisten Anwendungen lesen ihre Einstellungsdateien beim Start einmal und das defaultsTool ist vorhanden, um sicherzustellen, dass die Einstellungsdateien eine gültige Struktur haben und keine Syntaxfehler enthalten. (Außerdem kann das System ändern, wie die Schlüssel gespeichert werden, und Benutzer müssen die Implementierungsdetails nicht kennen und können den Befehl defaults verwenden , um alle Lese- und Schreibvorgänge auszuführen.)

Stil- und Grammatikhandbücher für Englisch stellen sicher, dass die Wörter, die ich hier eingebe, für den durchschnittlichen Englischsprechenden von Bedeutung sind, und die Standardisierung des Standardsystems legt einen Rahmen fest, in dem jeder weiß, was zu erwarten ist. Die Formatierung der Präferenzliste ist weitaus strenger und mathematischer als die einer menschlichen Sprache, aber die Konzepte sind ähnlich.

Das Standardsystem des Mac OS X-Benutzers ist ein Schlüsselwertspeicher (oder eine Datenbank, wenn Sie dies vorziehen).

Sie können alles in diese bevorzugten Schlüsselwertspeicher, ein Shakespeare-Sonett, Zahlen und eine Einkaufsliste schreiben. Wenn das Programm so programmiert ist, dass es nach einem bestimmten Schlüssel sucht, wird der gespeicherte Wert gelesen. Wenn der Schlüssel nicht gesucht wird, befindet sich der Wert dort, wo er nicht verwendet und ungelesen ist.

Hier erfahren Sie, nach welchen Werten ein bestimmtes Programm beim Start suchen könnte. Es läuft darauf hinaus, dass Sie entweder den Wert kennen oder das Programm rückentwickeln müssen.

Es gibt viele Tools, mit denen Sie ein Programm untersuchen und herausfinden können, welche Zeichenfolgen (die Schlüssel) eingebettet sind, z. B. stringsund dbx / lldb. Sie können auch in Ihrer eigenen Bibliothek Verknüpfungen herstellen, um die interne Struktur eines bestimmten Programms zu sichern.

In der Praxis werden einige Dinge, die zum Testen benötigt werden, auf diese "verborgene" Weise hinzugefügt, damit Sie nicht über den Einstellungsbereich des Programms schauen und diese neuen Funktionen sehen können, die nicht für eine breite Verwendung bereit sind. In gewisser Weise ist es überhaupt nicht einfach, eine umfassende Liste zu erhalten, wenn der Autor dieses Programms den Quellcode nicht freigibt oder diese Einstellungen auf andere Weise öffentlich dokumentiert.

Wenn Sie den Standardspeicher für eine bestimmte App lesen, lesen Sie nur das "Buch", das geschrieben wurde, als die App den Standardsatz oder die mit Mac OS X gelieferten Einstellungen erstellte. Aus diesem Grund erhalten Sie keine ausführlichen Informationen Liste der Dinge, die mit dieser Anwendung realistisch geändert werden können.

bmike
quelle
2

Soweit ich weiß, speichert eine Anwendung einen neuen Schlüssel nur, wenn er von den Standardeinstellungen abweicht. Das ist zumindest die Aufgabe meiner Apps. Dies kann nicht einfach gesteuert werden, da es Teil des User Defaults-Frameworks ist, da die App dem Benutzer standardmäßig nur mitteilt, was gespeichert werden muss, und den Rest erledigt. Ich glaube nicht, dass die Informationen, nach denen Sie suchen, leicht zu bekommen sind, leider. Es könnte jedoch schön sein, Zugang dazu zu haben.

Fred
quelle