Come elencare tutte le chiavi .plist disponibili su una determinata applicazione di dominio con il comando di default?


17

Voglio conoscere tutte le chiavi (elenco delle proprietà) che sono disponibili su determinate applicazioni di dominio, come esempio potrei elencare le chiavi disponibili com.apple.dockinserendo questo comando:

$ defaults read com.apple.dock

ma in qualche modo l'output di questo comando ha mostrato solo la chiave dell'elenco delle proprietà attive, eppure non tutte le chiavi disponibili com.apple.docksono elencate lì.

Qualcuno mi può aiutare in questo?


Ti dispiace se lo riformulo. Stai chiedendo dello strumento che scrive i messaggi e non di come decodificare il programma che legge i messaggi. Per impostazione predefinita, il programma ignora tutto ciò che viene impostato sui valori predefiniti che non si aspettava di vedere. Potresti incorporare shakespeare nelle preferenze del finder e non farebbe felicemente nulla fintanto che sarebbe stato valido plist XML una volta scritto nel file.
bmike

@bmike me ne rendo conto. Quello che mi interessava era l'elenco dei valori che l'applicazione utilizza effettivamente. Ho pensato che potrebbe esserci un elenco completo nascosto da qualche parte in un file di configurazione principale all'interno di App.
awesomo,

L'elenco dei valori esiste solo nel codice sorgente per ciascun programma. Hai un programma che ti interessa? Una volta compilati, le chiavi di stringa nel file binario vengono codificate e tutte confuse con le altre stringhe. Non c'è nulla che impedisca all'autore di un Programma di includere un elenco in quanto potrebbe essere facilmente aggiunto alla cartella Contenuti / Risorse presente in una determinata Applicazione. In pratica, questo non è ampiamente fatto.
bmike

Puoi anche diff l'output di defaults readper trovare i tasti per le normali preferenze o usare il CFPreferencesCopyValuemetodo in gdb. Vedi Come esplorare altre impostazioni predefinite scrivere modifiche su OS X? - Super utente .
Lri,

Potresti anche diff l'output di defaults readper trovare le chiavi per le normali preferenze, eseguire stringhe sui binari dei framework o usare il CFPreferencesCopyValuemetodo in gdb. Vedi Come esplorare altre impostazioni predefinite scrivere modifiche su OS X? - Super utente .
Lri,

Risposte:


7

Questo non è un compito banale, se ricordo bene le persone eseguono l' stringsutilità dalla riga di comando su un'applicazione e cercano cose che corrispondono a una struttura simile a com.domain.FeatureName. (com.apple.iTunes, ch.cyberduck.CyberDuck, com.panic.Coda, ecc.)

Il modo più semplice per gestire queste sostituzioni è tramite un riquadro delle preferenze di sistema con il nome di Segreti . L'utilizzo di questo installa un riquadro delle preferenze nelle Preferenze di Sistema e ti offre un'interfaccia per scegliere un'applicazione e modificarne le impostazioni in base alle tue preferenze.


Mi farebbe piacere se rispondessi anche tu laggiù - apple.stackexchange.com/questions/19899/… - le stringhe sono il modo più amichevole per tentare questa ingegneria inversa di chiavi per gli utenti finali.
bmike


5

Non esiste davvero una nozione di chiavi "disponibili". L'applicazione è libera di leggere qualunque chiave voglia. Molte persone scoprono le chiavi predefinite "segrete" usando stringsper guardare attraverso il binario dell'applicazione per vedere quali chiavi proverà a leggere.


sì, questo è esattamente ciò che voglio trovare chiavi predefinite "segrete". Potresti spiegare ulteriormente la chiave "segreta"? È molto utile se c'è qualche esempio. Grazie mille.
wongacid,

1
Molti esempi ben noti sono elencati su secrets.blacktree.com
jtbandes

Grazie!! fatemi sapere se avete avuto altri ottimi link su questo tipo di informazioni. :-)
wongacid

4

Molte persone qui vogliono fare tutto tramite la riga di comando, ma ho un suggerimento più pratico.

Questi due programmi descritti di seguito elencano molte delle note funzionalità personalizzabili della riga di comando delle applicazioni Mac OS X, ordinate per applicazione o funzione. Il vantaggio è che l'elenco delle funzioni è previsto per te; non devi cercare su Google per scoprire quali sono le funzioni e le sequenze della riga di comando necessarie per modificarle.

Esistono diverse applicazioni freeware o commerciali che forniscono un'interfaccia utente grafica che elenca la maggior parte delle opzioni di personalizzazione che possono essere modificate tramite il Terminale. Per attivare una di queste funzionalità, usando questi programmi che sto descrivendo, lo fai nella GUI dell'applicazione e non hai bisogno di usare la riga di comando. Non hai bisogno di sapere nulla defaults writeo .plistfile.

Due di queste app sono:

TinkerTool

che è gratuito e

MacPilot

che è appena stato aggiornato con le nuove funzionalità Lion e costa US $ 20,00.

Questi sono programmi che possiedo e utilizzo.

Scarica gratuitamente TinkerTool e la versione di prova di MacPilot e fai clic su tutte le schede per vedere tutte le innumerevoli funzioni che puoi personalizzare. Ce ne sono troppi da elencare qui.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Aggiornare

Lo sviluppatore Frederik Wiker ha rilasciato app freeware (donazioni accettate) per la creazione di personalizzazioni predefinite di scrittura specifiche per Lion e Mountain Lion; molti di loro funzionano bene anche con Mavericks (Mac OS X 10.9).

Scarica questi e vedi quali personalizzazioni sono disponibili per te.

Lion Tweaks

Tweaks di montagna

inserisci qui la descrizione dell'immagine


Grazie per i consigli Apprezzo l'approccio alternativo.
awesomo,

Dovresti davvero accettare questa / la risposta di Wheat. Sono anni luce avanti ai miei.
Jason Salaz,

3

Forse una spiegazione abbastanza lunga su come funzionano le cose potrebbe chiarire la tua ricerca e quella degli altri per queste preferenze "nascoste".

La maggior parte delle applicazioni leggerà i propri file delle preferenze una volta avviati e lo defaultsstrumento esiste per garantire che i file delle preferenze siano una struttura valida e non contengano errori di sintassi. (Inoltre, consente al sistema di modificare il modo in cui sono archiviate le chiavi e le persone non devono conoscere i dettagli dell'implementazione e possono utilizzare il comando defaults per eseguire tutte le operazioni di lettura e scrittura.)

Lo stile della lingua inglese e le guide grammaticali assicurano che le parole che scrivo qui siano significative per chi parla inglese medio e standardizzare il sistema di default imposta un framework in modo che tutti sappiano cosa aspettarsi. La formattazione dell'elenco delle preferenze è molto più rigida e matematica di un linguaggio umano, ma i concetti sono simili.

Il sistema di default dell'utente Mac OS X è un archivio di valori chiave (o database se si preferisce).

Puoi scrivere qualsiasi cosa in questi negozi di valori-chiave delle preferenze, un sonetto di Shakespeare, numeri, una lista della spesa. Se il programma è codificato per cercare una chiave specifica, leggerà il valore memorizzato. Se non sta cercando quella chiave, il suo valore rimane lì inutilizzato e non letto.

Questo spiega come sapere quali valori potrebbero essere ricercati da un programma specifico all'avvio. Si riduce a te o devi conoscere il valore o decodificare il programma.

Esistono molti strumenti per esaminare un programma e cercare di capire quali stringhe (le chiavi) sono incorporate, come stringse dbx / lldb, nonché il collegamento nella propria libreria per scaricare la struttura interna di un programma specifico.

In pratica, alcune cose che sono necessarie per il test vengono aggiunte in questo modo "nascosto" in modo da non poter guardare nel riquadro delle preferenze del programma e vedere queste nuove funzionalità che non sono pronte per un ampio utilizzo. In un certo senso, non è affatto semplice ottenere un elenco completo a meno che l'autore di quel programma non rilasci il codice sorgente o non documenti in altro modo queste impostazioni pubblicamente.

Quando leggi l'archivio delle impostazioni predefinite per una particolare app, stai solo leggendo il "libro" che è stato scritto quando l'app ha creato il set predefinito o le impostazioni fornite con Mac OS X. Ecco perché non ricevi l'esaustivo elenco di cose che sono realisticamente possibili per cambiare con quell'applicazione.


2

Per quanto ne so, un'applicazione memorizzerà una nuova chiave solo se diversa dalle impostazioni predefinite, almeno è quello che fanno le mie app. Questo non è qualcosa che può essere controllato facilmente in quanto fa parte del framework Default utente, in quanto l'app dice all'utente solo ciò che deve essere archiviato e si occupa di tutto il resto. Non credo che le informazioni che stai cercando saranno facilmente ottenibili, purtroppo. Potrebbe essere carino avere accesso a questo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.