Ich arbeite derzeit an der automatisierten Installation von Mavericks 10.9. Ich habe NetBoot eingerichtet. Alles funktioniert in Ordnung, bis ich Applescript ausführen möchte. Seit der Veröffentlichung der neuen Version muss ich diese Skripte manuell aktivieren. Gibt es einen Befehl, mit dem ich im Shell-Skript eine App zur Liste der Hilfsgeräte hinzufügen kann? Oder gibt es vielleicht eine Liste, die bearbeitet werden muss, damit sie funktioniert?
terminal
mavericks
applescript
plist
automation
KarolBerlinski
quelle
quelle
Antworten:
Die Einstellungen sind gespeichert in
/Library/Application Support/com.apple.TCC/TCC.db
:Das von gegebene Schema
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access'
lautet:Bei meiner Installation ist die letzten vier Spalten (
client_type
,allowed
,prompt_count
undcsreq
) ist0|1|0|\xfa\xde\x0c
für Anwendungen , die hinzugefügt wurden , nachdem das"example.app" would like to control this computer using accessibility features
wurde Dialog gezeigt und0|1|1|
für Anwendungen , die ich durch Fallenlassen in die Liste in den Systemeinstellungen hinzugefügt.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
enthält eine Liste von Anwendungen, für die der Warndialog angezeigt wurde:Ich konnte jedoch nicht herausfinden, wie der Zugriff auf Hilfsgeräte für eine Anwendung tatsächlich zugelassen werden kann. Ich habe zum Beispiel versucht, diese Befehle auszuführen:
Ich habe auch versucht, neu zu starten, um die Änderungen zu übernehmen und die letzten vier Spalten auf zu setzen
0,1,1,""
.quelle
sudo sqlite3 ...
.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
ist nicht an der Erteilung von Berechtigungen beteiligt, sondern zeichnet nur auf, ob eine Warnung angezeigt wurde, um zu vermeiden, dass Benutzer mit wiederholten Warnungen belästigt werden.??
(\xfa\xde\x0c
) stammt aus dercsreq
Spalte, die einen Fingerabdruck der angegebenen App enthält. OSX verwaltet dies automatisch hinter den Kulissen - Sie müssen es nie angeben. Der tatsächliche Wert ist viel länger; Die Kürzung auf 3 Bytes ergibt sich aus dem Versuch, den Binärwert (DatentypBLOB
) so auszugeben, als wäre es eine Zeichenfolge, wodurch die Ausgabe beim ersten NUL-Byte stoppt (der?
Stamm aus den\xfa
und\xde
nicht gültigen Zeichen in der UTF8-Codierung\x0c
ist vertikal) Registerkarte, die effektiv einen Zeilenumbruch erzeugt).csreq
Spalte enthält die kompilierten festgelegten Anforderungen für die App, siehe goo.gl/z10vl und Apples TN2206 Code Signing in Depth- Handbuch. Die festgelegten Anforderungen sind im Wesentlichen ein Skript, das die Identität einer App durch Überprüfen der Bundle-ID und der Zertifikate überprüft.Sie können die Datei auch hinzufügen, indem Sie die folgenden Befehle ausführen.
Dieser Befehl findet die Bundle-ID für die Anwendung, die Sie zu Assistive Devices hinzufügen möchten.
Angenommen, die Anwendung, die Sie hinzufügen wollten, war SKYPE. Sie würden dies dann unten eingeben:
Und Ihre Bundle-ID wäre:
Sie verwenden diese Ausgabe dann im folgenden Befehl:
Für Skype würde es so aussehen:
Um die Anwendung zu entfernen, verwenden Sie die
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"
quelle
REPLACE INTO
statt ,INSERT INTO
um zu gewährleisten , dass der Befehl funktioniert auch , wenn die Datenbank bereits einen Eintrag für die angegebene Anwendung hat.REPLACE INTO
ist ein Alias für die aussagekräftigerenINSERT OR REPLACE INTO
).