나는 현재 Mavericks 10.9의 자동 설치를 위해 노력하고 있습니다. NetBoot를 설정했습니다. Applescript를 실행하기 전까지는 모든 것이 정상적으로 작동합니다. 새 버전이 출시 된 이후로 해당 스크립트를 수동으로 활성화해야합니다. 셸 스크립트에서 보조 장치 목록에 앱을 추가 할 수있는 명령이 있습니까? 아니면 작동하도록 편집해야 할 plist가 있습니까?
답변
설정은 다음에 저장됩니다 /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'
는 다음과 같습니다.
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));
내 설치의 마지막 네 개의 열 ( client_type
, allowed
, prompt_count
,과 csreq
)이다 0|1|0|\xfa\xde\x0c
이후에 추가 된 응용 프로그램에 대한 "example.app" would like to control this computer using accessibility features
대화 상자가 표시되고 0|1|1|
나는 시스템 환경 설정의 목록에 드롭하여 추가 한 응용 프로그램.
~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
경고 대화 상자가 표시된 응용 프로그램 목록이 포함되어 있습니다.
$ 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;
}
그래도 응용 프로그램의 보조 장치에 대한 액세스를 실제로 허용하는 방법을 알 수 없었습니다. 예를 들어 다음 명령을 실행하려고했습니다.
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
또한 변경 사항을 적용하고 마지막 네 열을로 설정하기 위해 다시 시작하려고했습니다 0,1,1,""
.
답변
아래 명령에 따라 파일을 추가 할 수도 있습니다.
이 명령은 보조 장치에 추가하려는 응용 프로그램의 번들 식별자를 찾습니다.
/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/enterapplicaitonnamehere.app/Contents/Info.plist
추가하려는 애플리케이션이 SKYPE라고 가정 해 보겠습니다. 그런 다음 아래에 입력하십시오.
/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/Skype.app/Contents/Info.plist
번들 식별자는 다음과 같습니다.
com.skype.skype
그런 다음 아래 명령에서이 출력을 사용하십시오.
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','',0,1,1,NULL);"
Skype의 경우 다음과 같습니다.
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','com.skype.skype',0,1,1,NULL);"
응용 프로그램을 제거하려면 sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"