Monterey系统下如何让AppleScript无需权限弹窗运行或自动授权?
在macOS Monterey中规避AppleScript权限请求的方法
一、修改TCC数据库直接授予权限(适配Monterey的正确命令)
你之前使用的SQLite命令仅适配旧版系统,Monterey的TCC数据库结构已更新,需调整命令格式。操作前必须关闭System Integrity Protection (SIP),因为TCC数据库受SIP保护,未关闭时无法修改。
步骤:
- 重启Mac进入恢复模式,打开终端执行
csrutil disable,完成后重启系统。 - 执行以下命令(以Terminal为例,若为其他应用,替换
com.apple.Terminal为对应应用的Bundle ID):
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility', 'com.apple.Terminal', 0, 1, 1, NULL, NULL, NULL, 'UNUSED', NULL, NULL, 0);"
- 执行
sudo killall tccd重启TCC服务,或直接重启Mac,权限将自动生效,不会再弹出请求窗口。
二、模拟点击自动接受权限弹窗
若不想关闭SIP,可通过AppleScript模拟点击弹窗的「允许」按钮,但前提是运行该脚本的应用已获得辅助功能权限(比如Script Editor或Terminal)。
示例脚本:
-- 运行目标AppleScript do shell script "osascript /path/to/your/target-script.scpt" -- 等待权限弹窗并模拟点击 tell application "System Events" repeat until exists window "System Preferences" delay 0.5 end repeat click button "允许" of window "System Preferences" of application process "System Preferences" end tell
三、注意事项
- 修改TCC数据库存在风险,操作前建议备份:
sudo cp /Library/Application\ Support/com.apple.TCC/TCC.db ~/Desktop/TCC_backup.db - 若使用打包后的AppleScript应用,需替换命令中的Bundle ID,可通过
osascript -e 'id of app "YourAppName"'获取对应ID - Monterey及后续系统的隐私管控持续加强,修改TCC的方式可能随系统更新失效,优先建议通过官方流程申请权限,仅在测试或特定场景使用上述方法
内容的提问来源于stack exchange,提问作者user43535
相关产品推荐
相关产品推荐

