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 без удачі.

Я пройшов через інші питання , як це і інші без будь - якої допомоги.

EDIT: Дякую за відповідь, хлопці. Ми вже спробували ці методи, і вони працюють без всяких сумнівів, і ось тут криється проблема. У нас занадто багато комп'ютерів Mac, щоб обійти їх і ввімкнути їх вручну. Ми сподівалися на якусь команду, яка додасть Terminal до списку з дозволу користувача (на зразок UAC в Windows) або, якщо можливо, мовчки.

Відповіді:


13

Якщо ви запускаєте код AppleScript через у Terminal , вам потрібно додати термінал до системних налаштувань > Безпека та конфіденційність > Конфіденційність > Доступність , щоб дозволити йому допоміжний доступ.osascript


Я взяв ваш код , зберег його у файлі з ім’ям testcodeі зробив його виконуваним за допомогою chmod. Потім я запустив його в Terminal і отримав таку помилку:

./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

Звичайно, це відкрило системні налаштування до цієї мети .


У моєму випадку зателефонував Альфред 3. Його не додавали до списку автоматично, тому я просто вручну додав його до «Доступності» і тоді мій виклик сценарію спрацював.
Кріс Редфорд

3
У мене така ж помилка, хоча я маю термінал у безпеці та конфіденційності
Кевін

5

У мене виникла помилка, 636:751: execution error: System Events got an error: osascript is not allowed assistive access. (-1719)незважаючи на те, що я запустив osascriptкоманду з iTerm 2, який був у списку програм у розділі "Налаштування системи> Безпека та конфіденційність> Конфіденційність> Доступність".

Я припинив отримувати помилку після того, як я також додав /System/Library/CoreServices/до цього списку додаток System in (in ).


Дивно, що це спрацювало. Бажаю, я знав, чому. Я додав спочатку всі інші більш очевидні програми ... безрезультатно.
Дель Браун

Ти мій рятівник життя.
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 до "Assistive Access" - принаймні внутрішньо, 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.