Consenti all'applicazione di controllare il computer (dispositivi di assistenza) su Mavericks tramite terminale?

8

Attualmente sto lavorando su instalation automatizzata di Mavericks 10.9. Ho installato NetBoot. Tutto funziona bene fino a che non voglio eseguire Applescript. Dal rilascio della nuova versione ho bisogno di abilitare manualmente quegli script. Esiste un comando che posso utilizzare nello script di shell per aggiungere l'app all'elenco dei dispositivi di assistenza? O forse c'è qualche plist che deve essere modificato perché funzioni?

    
posta KarolBerlinski 26.11.2013 - 15:41
fonte

2 risposte

8

Le impostazioni sono memorizzate in /Library/Application Support/com.apple.TCC/TCC.db :

$ sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access'
kTCCServiceAccessibility|com.apple.ScriptEditor2|0|1|0|��

kTCCServiceAccessibility|com.red-sweater.FastScripts|0|1|0|��

kTCCServiceAccessibility|com.apple.AccessibilityInspector|0|1|0|��

kTCCServiceAccessibility|com.slate.Slate|0|1|0|��

kTCCServiceAccessibility|com.apple.Automator|0|1|1|
kTCCServiceAccessibility|com.googlecode.iterm2|0|1|1|

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access' stampa CREATE TABLE access (service TEXT NOT NULL, client TEXT NOT NULL, client_type INTEGER NOT NULL, allowed INTEGER NOT NULL, prompt_count INTEGER NOT NULL, csreq BLOB, CONSTRAINT key PRIMARY KEY (service, client, client_type)); .

Durante l'installazione le ultime quattro colonne ( client_type , allowed , prompt_count e csreq ) sono 0|1|0|\xfa\xde\x0c per le applicazioni che sono state aggiunte dopo la finestra di dialogo "example.app" would like to control this computer using accessibility features e 0|1|1| per applicazioni che ho aggiunto rilasciandole nell'elenco in Preferenze di sistema.

~/Library/Preferences/com.apple.universalaccessAuthWarning.plist contiene un elenco di applicazioni per le quali è stata visualizzata la finestra di avviso:

$ defaults read com.apple.universalaccessAuthWarning
{
    "/Applications/Automator.app" = 1;
    "/Applications/Automator.app/Contents/MacOS/Automator" = 1;
    "/Applications/FastScripts.app" = 1;
    "/Applications/FastScripts.app/Contents/MacOS/FastScripts" = 1;
    "/Applications/Slate.app" = 1;
    "/Applications/Slate.app/Contents/MacOS/Slate" = 1;
    "/Applications/Utilities/AppleScript Editor.app" = 1;
    "/Applications/Utilities/AppleScript Editor.app/Contents/MacOS/AppleScript Editor" = 1;
    "/Applications/Xcode.app/Contents/Applications/Accessibility Inspector.app" = 1;
    "/Applications/Xcode.app/Contents/Applications/Accessibility Inspector.app/Contents/MacOS/Accessibility Inspector" = 1;
    "/Applications/iTerm.app" = 1;
    "/Applications/iTerm.app/Contents/MacOS/iTerm" = 1;
    "/Users/lauri/Desktop/aa.app" = 1;
    "/Users/lauri/Desktop/aa.app/Contents/MacOS/applet" = 1;
    "com.apple.AccessibilityInspector" = 1;
    "com.apple.Automator" = 1;
    "com.apple.ScriptEditor.id.aa" = 1;
    "com.apple.ScriptEditor2" = 1;
    "com.red-sweater.FastScripts" = 1;
    "com.slate.Slate" = 1;
}    

Non sono riuscito a capire come consentire effettivamente l'accesso ai dispositivi assistivi per un'applicazione. Ho provato ad esempio ad eseguire questi comandi:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'insert into access values ("kTCCServiceAccessibility","com.apple.ScriptEditor.id.qq",0,1,0,"'$'\xfa\xde\x0c''");'
defaults write com.apple.universalaccessAuthWarning com.apple.ScriptEditor.id.qq -bool true
defaults write com.apple.universalaccessAuthWarning /Users/lauri/Desktop/qq.app -bool true
defaults write com.apple.universalaccessAuthWarning /Users/lauri/Desktop/qq.app/Contents/MacOS/applet -bool true
sudo killall tccd

Ho anche provato a riavviare per applicare le modifiche e impostare le ultime quattro colonne a 0,1,1,"" .

    
risposta data 27.11.2013 - 16:30
fonte
6

Puoi anche aggiungere il file seguendo i comandi di seguito.

Questo comando troverà l'identificatore del pacchetto per l'applicazione che stai tentando di aggiungere ai dispositivi assistivi.

/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/enterapplicaitonnamehere.app/Contents/Info.plist

Diciamo che l'applicazione che stavi cercando di aggiungere era SKYPE. Dovresti quindi inserire quanto segue:

/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/Skype.app/Contents/Info.plist

E il tuo identificatore di gruppo sarebbe:

com.skype.skype

Quindi usi questa uscita nel comando seguente:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','',0,1,1,NULL);" 

Per Skype sembrerebbe questo:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','com.skype.skype',0,1,1,NULL);" 

Per rimuovere l'applicazione dovresti usare sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"

    
risposta data 26.02.2014 - 19:49
fonte

Leggi altre domande sui tag