10 votes

Autoriser l'application à contrôler l'ordinateur (dispositifs d'assistance) sur Mavericks via Terminal ?

Je travaille actuellement sur l'installation automatique de Mavericks 10.9. J'ai configuré NetBoot. Tout fonctionne bien jusqu'à ce que je veuille exécuter Applescript. Depuis la sortie de la nouvelle version, je dois activer manuellement ces scripts. Existe-t-il une commande que je peux utiliser dans le shell scripts pour ajouter l'app à la liste Assistive Devices ? Ou peut-être qu'il y a un plist qui doit être édité pour que cela fonctionne ?

12voto

Fuzzy Purple Monkey Points 702

Les paramètres sont enregistrés dans /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|

Le schéma, tel que donné par sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access' c'est :

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));

Sur mon installation, les quatre dernières colonnes ( client_type , allowed , prompt_count et csreq ) sont 0|1|0|\xfa\xde\x0c pour les applications qui ont été ajoutées après la "example.app" would like to control this computer using accessibility features s'est affiché et 0|1|1| pour les applications que j'ai ajoutées en les déposant dans la liste des Préférences Système.

~/Library/Preferences/com.apple.universalaccessAuthWarning.plist contient une liste d'applications pour lesquelles la boîte de dialogue d'avertissement a été affichée :

$ 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;
}    

Je n'ai pas réussi à comprendre comment autoriser l'accès aux appareils fonctionnels pour une application. J'ai essayé par exemple d'exécuter ces commandes :

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

J'ai également essayé de redémarrer pour appliquer les changements et de définir les quatre dernières colonnes comme suit 0,1,1,"" .

8voto

SurDin Points 755

Vous pouvez également ajouter le fichier en suivant les commandes ci-dessous.

Cette commande trouvera l'identifiant de l'application que vous essayez d'ajouter à Assistive Devices.

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

Disons que l'application que vous essayez d'ajouter est SKYPE. Vous devriez alors entrer ceci ci-dessous :

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

Et votre identifiant de liasse serait :

com.skype.skype

Vous utilisez ensuite cette sortie dans la commande ci-dessous :

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

Pour Skype, cela ressemblerait à ceci :

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

Pour supprimer l'application, vous devez utiliser la commande sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X