osascript不允许辅助访问。(-1728)


16

脚本:

#!/usr/bin/osascript
tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preferences.users"
    delay 2
    tell application "System Events"
        click radio button "Login Items" of tab group 1 of window "Users & Groups" of application process "System Preferences"
    end tell
end tell

如何为该脚本提供辅助访问?通过“脚本编辑器”运行此脚本时,所需要做的就是在“安全性和隐私”中的“辅助功能”下启用“脚本编辑器”。

但是我需要运行此文件(以及其他一些类似的脚本文件)以在没有用户干预的情况下执行。我试过将文件保存为.sh,.app,.scpt,.applescript格式,并以sudo的身份通过终端运行,没有任何运气。

我已经通过像其他的问题了这个没有任何帮助等。

编辑:感谢您的回应。我们已经尝试过这些方法,并且毫无疑问它们可以工作,这就是问题所在。我们拥有太多Mac机器,无法手动启用它们。我们希望有一些命令可以在用户许可的情况下将Terminal添加到列表(类似于Windows中的UAC),或者在可能的情况下将其添加到列表中。

Answers:


13

如果您通过在Terminal中运行AppleScript 代码,则需要将Terminal添加到System Preferences > Security&Privacy > Privacy > Accessibility中,以允许其辅助访问。osascript


我将您的代码保存到一个名为的文件中,testcode并使用使其可执行chmod。然后,我在终端中运行它并收到以下错误:

./testcode:157:286: execution error: System Events got an error: osascript is not allowed assistive access. (-1728)

然后,将终端添加到“ 系统偏好设置” >“ 安全性和隐私” >“ 隐私” >“ 可访问性”,然后再次运行它。然后,它正确处理了脚本并返回:

radio button Login Items of tab group 1 of window Users & Groups of application process System Preferences

当然,它为该目标打开了系统偏好设置


就我而言,调用者是Alfred3。它不会自动添加到列表中,因此我只是将其手动添加到Accessibility中,然后我的脚本调用起作用了。
克里斯·雷德福德

3
即使我在“安全性和隐私权”中拥有终端机,我仍然
凯文

5

636:751: execution error: System Events got an error: osascript is not allowed assistive access. (-1719)即使我osascript从“系统偏好设置>安全和隐私>隐私>可访问性”中的应用程序列表中运行了iTerm 2中的命令,也遇到了类似的错误。

我还将System Events应用程序(在中/System/Library/CoreServices/)添加到该列表之后,我不再收到该错误。


令人惊讶的是,它起作用了。希望我知道为什么。我首先添加了所有其他更明显的应用程序……无济于事。
德尔布朗

你是我的救星。
alswl

1

链接答案中关键点是

首次加载或运行LaunchAgents时,会提示您在“系统偏好设置”中设置“辅助访问”。如果您已经打开了系统偏好设置,则不会,但是脚本文本文件将被添加到列表中。

现在,您只需要选中其复选框即可。

步骤1是打开“安全性”选项卡,并允许您的脚本应用程序或单个脚本权限自动化界面。

在此处输入图片说明

步骤2-获利并避免错误-1728


1
不幸的是,这对我而言对LaunchAgent而言实际上不起作用,我的日志显示出来,execution error: System Events got an error: osascript is not allowed assistive access. (-1719)并且系统偏好设置未提示我允许辅助访问。macOS 10.12.6
swrobel

尝试还加入osascript为“辅助访问” -至少在内部,AppleScript的对待“osascript” 不是简单地命令,但其自身的过程。。。。将以下代码粘贴到ScriptEditor中:。。tell application "System Events" to do shell script "osascript -e 'tell application \"System Events\"\n display dialog (items of (name of (every process whose name contains \"sc\") as list) as string)\n end tell'"。。。并且您将看到一个列表(严重的不是“分隔的”),其末尾带有“ osascript”。
clemsam lang
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.