Je travaille actuellement sur l'installation automatisée 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 script shell pour ajouter une application à la liste des appareils et accessoires fonctionnels? Ou peut-être y a-t-il une liste à modifier pour que cela fonctionne?
terminal
mavericks
applescript
plist
automation
KarolBerlinski
la source
la source
Réponses:
Les paramètres sont stockés dans
/Library/Application Support/com.apple.TCC/TCC.db
:Le schéma, tel que donné par
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access'
, est:Sur mon installation , les quatre dernières colonnes (
client_type
,allowed
,prompt_count
etcsreq
) sont0|1|0|\xfa\xde\x0c
des applications qui ont été ajoutés après la"example.app" would like to control this computer using accessibility features
boîte de dialogue a été montré et0|1|1|
pour les applications que j'ai ajouté en les laissant tomber à la liste dans les Préférences Système.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
contient une liste des applications pour lesquelles la boîte de dialogue d'avertissement a été affichée:Je n'arrivais pas à comprendre comment autoriser l'accès aux appareils et accessoires fonctionnels pour une application. J'ai essayé par exemple d'exécuter ces commandes:
J'ai également essayé de redémarrer pour appliquer les modifications et définir les quatre dernières colonnes
0,1,1,""
.la source
sudo sqlite3 ...
.~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
n'est pas impliqué dans l' octroi d' autorisations, il enregistre uniquement si un avertissement a été affiché pour éviter de déranger les utilisateurs avec des avertissements répétés.??
(\xfa\xde\x0c
) provient de lacsreq
colonne, qui contient une empreinte digitale des sortes de l'application spécifiée; OSX gère cela automatiquement dans les coulisses - pas besoin de le spécifier. La valeur réelle est beaucoup plus longue; la troncature à 3 octets provient de la tentative de sortie de la valeur binaire (type de donnéesBLOB
) comme s'il s'agissait d'une chaîne, provoquant l'arrêt de la sortie au premier octet NUL (la?
racine de\xfa
et\xde
n'étant pas des caractères valides dans le codage UTF8,\x0c
est une verticale onglet qui crée efficacement un saut de ligne).csreq
colonne contient les exigences désignées compilées pour l'application, voir goo.gl/z10vl et le guide détaillé de signature de code TN2206 d'Apple . Les exigences désignées sont essentiellement un script qui valide l'identité d'une application en vérifiant l'ID de l'ensemble et les certificats.Vous pouvez également ajouter le fichier en suivant les commandes ci-dessous.
Cette commande trouvera l'identifiant de bundle pour l'application que vous essayez d'ajouter aux appareils et accessoires fonctionnels.
Supposons que l'application que vous essayez d'ajouter était SKYPE. Vous devez ensuite saisir ceci ci-dessous:
Et votre identifiant de bundle serait:
Vous utilisez ensuite cette sortie dans la commande ci-dessous:
Pour Skype, cela ressemblerait à ceci:
Pour supprimer l'application, vous utiliseriez le
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"
la source
REPLACE INTO
au lieu deINSERT INTO
afin de garantir que la commande fonctionne même si la base de données a déjà une entrée pour l'application spécifiée.REPLACE INTO
est un alias pour les plus descriptifsINSERT OR REPLACE INTO
).