Wie listet man alle verfügbaren .plist-Schlüssel einer bestimmten Domänenanwendung per Standardbefehl auf?

Ich möchte alle Schlüssel (Eigenschaftsliste) wissen, die in einer bestimmten Domänenanwendung verfügbar sind. Als Beispiel könnte ich die 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, com.apple.dockdie dort aufgeführt sind.

Wer kann mir dabei helfen?

Stört es Sie, wenn ich das umformuliere. Sie fragen nach dem Tool, das Nachrichten schreibt, und nicht nach dem Reverse Engineering des Programms, das die Nachrichten liest. Standardmäßig ignoriert das Programm alles, was Sie in defaults eingegeben haben, das es nicht erwartet hat. Sie könnten Shakespeare in die Finder-Voreinstellungen einbetten, und es würde glücklicherweise nichts tun, solange es sich um gültiges Plist-XML handelt, das einmal in die Datei geschrieben wurde.
@bmike Das ist mir klar. Was mich interessierte, war die Liste der Werte, die die Anwendung tatsächlich verwendet. Ich dachte, es könnte eine vollständige Liste irgendwo in einer Master-Konfigurationsdatei in Apps versteckt sein.
Die Werteliste existiert nur im Quellcode für jedes Programm. Haben Sie ein Programm, das Sie interessiert? Sobald sie kompiliert sind, werden die Zeichenfolgenschlüssel in der Binärdatei codiert und alle mit den anderen Zeichenfolgen vermischt. Es gibt nichts, was den Autor eines Programms daran hindert, eine Liste einzufügen, da diese leicht zum Inhalts-/Ressourcenordner hinzugefügt werden könnte, der in einer bestimmten Anwendung vorhanden ist. In der Praxis ist dies nicht weit verbreitet.
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. Siehe So erkunden Sie weitere Standardeinstellungen, um Anpassungen unter OS X zu schreiben? - Superuser .
Sie können auch die Ausgabe von defaults readunterscheiden, um die Schlüssel für normale Einstellungen zu finden, Zeichenfolgen in den Binärdateien von Frameworks ausführen oder die CFPreferencesCopyValueMethode in gdb verwenden. Siehe So erkunden Sie weitere Standardeinstellungen, um Anpassungen unter OS X zu schreiben? - Superuser .

Antworten (6)

Dies ist keine triviale Aufgabe, wenn ich mich richtig erinnere, führen die Leute das stringsDienstprogramm an der Befehlszeile gegen eine Anwendung aus und suchen nach Dingen, die einer ähnlichen Struktur wie com.domain.FeatureName entsprechen. (com.apple.iTunes, ch.cyberduck.CyberDuck, com.panic.Coda usw.)

Der wahrscheinlich einfachste Weg, diese Außerkraftsetzungen zu verwalten, ist ein Systemeinstellungsfenster namens Secrets . Wenn Sie dies verwenden, wird ein Einstellungsfenster in den Systemeinstellungen installiert und Sie erhalten eine Schnittstelle zum Auswählen einer Anwendung und zum Ändern ihrer Einstellungen nach Ihren speziellen Vorlieben.

Ich würde mich freuen, wenn Sie dies auch dort beantworten würden - apple.stackexchange.com/questions/19899/… - strings ist der freundlichste Weg, um dieses Reverse Engineering von Schlüsseln für Endbenutzer zu versuchen.

Ich habe eine Website gefunden, die diesen standardmäßigen Schreibbefehlen von Mac OS X gewidmet ist, einige praktische Befehle für Mac OS X Lion und Mountain Lion.

http://www.defaults-write.com

Es gibt wirklich keine Vorstellung von "verfügbaren" Schlüsseln. Der Anwendung steht es frei, beliebige Schlüssel zu lesen. Die meisten Leute entdecken "geheime" Standardschlüssel, indem sie stringsdie Binärdatei der Anwendung durchsuchen, um zu sehen, welche Schlüssel sie zu lesen versucht.

Ja, genau das möchte ich finden, "geheime" Standardschlüssel. Können Sie den "geheimen" Schlüssel näher erläutern? Es ist sehr hilfreich, wenn es ein Beispiel gibt. Ich danke Ihnen sehr.
Viele bekannte Beispiele sind unter secrets.blacktree.com aufgelistet
Vielen Dank!! Lassen Sie mich wissen, ob Sie einen anderen großartigen Link zu dieser Art von Informationen hatten. :-)

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

Diese beiden unten beschriebenen Programme listen viele der bekannten anpassbaren Befehlszeilenfunktionen 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 nicht Google durchsuchen, um herauszufinden, was die Funktionen sind und welche Befehlszeilensequenzen zum Ändern der einzelnen Funktionen erforderlich sind.

Es gibt mehrere Freeware- oder kommerzielle Anwendungen, die eine grafische Benutzeroberfläche bieten, die fast alle Anpassungsoptionen auflistet, die über das Terminal geändert werden können. Um eine dieser Funktionen mit diesen von mir beschriebenen Programmen zu aktivieren, tun Sie dies innerhalb der GUI der Anwendung und müssen überhaupt nicht die Befehlszeile verwenden. Sie müssen nichts über defaults writeoder .plistDateien wissen.

Zwei dieser Apps sind:

TinkerTool

das ist kostenlos, und

MacPilot

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

Dies sind Programme, die ich besitze und verwende.

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

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Aktualisieren

Entwickler Frederik Wiker hat Freeware-Apps (Spenden akzeptiert) zum Erstellen von Standard-Schreibanpassungen speziell für Lion und Mountain Lion veröffentlicht; Viele von ihnen funktionieren auch gut für Mavericks (Mac OS X 10.9).

Laden Sie diese herunter und sehen Sie, welche Anpassungen Ihnen zur Verfügung stehen.

Lion-Optimierungen

Berg-Tweaks

Geben Sie hier die Bildbeschreibung ein

Danke für die Empfehlungen. Ich schätze den alternativen Ansatz.
Sie sollten diese / Wheats Antwort wirklich akzeptieren. Es ist mir Lichtjahre voraus.

Vielleicht könnte eine ziemlich lange Erklärung, wie die Dinge funktionieren, Ihre und die Suche anderer nach diesen "versteckten" Vorlieben aufklären.

Die meisten Anwendungen lesen ihre Einstellungsdateien einmal, wenn sie gestartet werden, und das defaultsTool ist vorhanden, um sicherzustellen, dass die Einstellungsdateien eine gültige Struktur haben und keine Syntaxfehler enthalten. (Es ermöglicht dem System auch zu ändern, wie die Schlüssel gespeichert werden, und die Benutzer müssen die Implementierungsdetails nicht kennen und können den Standardbefehl verwenden , um das gesamte Lesen und Schreiben zu erledigen.)

Stil- und Grammatikleitfäden für die englische Sprache stellen sicher, dass die Wörter, die ich hier schreibe, für den durchschnittlichen englischen Sprecher aussagekräftig sind, und die Standardisierung des Standardsystems setzt einen Rahmen, damit jeder weiß, was ihn erwartet. Die Formatierung der Präferenzliste ist viel starrer und mathematischer als eine menschliche Sprache, aber die Konzepte sind ähnlich.

Das Benutzerstandardsystem von Mac OS X ist ein Schlüsselwertspeicher (oder eine Datenbank, wenn Sie dies vorziehen).

Sie können alles in diese Key-Value-Speicher für Präferenzen schreiben, ein Shakespeare-Sonett, Zahlen, eine Einkaufsliste. Wenn das Programm so codiert ist, dass es nach einem bestimmten Schlüssel sucht, liest es den gespeicherten Wert. Wenn es nicht nach diesem Schlüssel sucht, liegt sein Wert dort ungenutzt und ungelesen.

Dies führt dazu, wie Sie wissen, 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 zurückentwickeln müssen.

Es gibt viele Tools, um in ein Programm zu schauen und herauszufinden, welche Strings (die Schlüssel) eingebettet sind, wie z. B. stringsund dbx/lldb, sowie das Verlinken in Ihre eigene Bibliothek, um die interne Struktur eines bestimmten Programms auszugeben.

In der Praxis werden einige Dinge, die zum Testen benötigt werden, auf diese „versteckte“ Weise hinzugefügt, sodass Sie nicht über das Einstellungsfenster des Programms blicken 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, es sei denn, der Autor dieses Programms veröffentlicht den Quellcode oder dokumentiert diese Einstellungen anderweitig öffentlich.

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

Soweit ich weiß, speichert eine Anwendung nur dann einen neuen Schlüssel, wenn sie von ihren Standardeinstellungen abweicht, zumindest tun das meine Apps.

Dies kann nicht einfach kontrolliert werden, da es Teil des User DefaultsFrameworks ist, da die App den Benutzereinstellungen nur mitteilt, was gespeichert werden muss, und sich um den Rest kümmert.

Ich glaube leider nicht, dass die Informationen, nach denen Sie suchen, leicht zu beschaffen sein werden. Es könnte jedoch schön sein, darauf zugreifen zu können.