osascript nie ma dostępu wspomagającego. (-1728)

16

Scenariusz:

#!/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

Jak zapewnić pomocniczy dostęp do tego skryptu? Aby uruchomić to za pomocą „Script Editor”, wystarczy, że „Script Editor” zostanie włączony w „Accessibility” w „Security & Privacy”.

Ale muszę uruchomić ten (i kilka innych podobnych plików skryptowych), aby wykonać bez interwencji użytkownika. Próbowałem zapisać plik w formacie .sh, .app, .scpt, .applescript i bez powodzenia uruchomiłem terminal jako sudo.

Przeszłam przez inne pytania, takie jak to i inne, bez żadnej pomocy.

EDYCJA: Dzięki za odpowiedź chłopaki. Wypróbowaliśmy już te metody i działają one bez wątpienia i na tym polega problem. Mamy zbyt wiele komputerów Mac, aby można było je obejść i włączyć na nich ręcznie. Mieliśmy nadzieję na jakieś polecenie, które doda Terminal do listy za zgodą użytkownika (coś w rodzaju UAC w Windows) lub, jeśli to możliwe, po cichu.

John Shepard
źródło

Odpowiedzi:

13

W przypadku uruchomienia AppleScript kod poprzez osascriptw terminalu , to trzeba dodać Terminal do Preferencje systemowe > Bezpieczeństwo i prywatność > Prywatność > Ułatwienia dostępu , aby to umożliwić dostęp wspomagające.


Wziąłem twój kod , zapisałem go w pliku o nazwie testcodei uczyniłem go wykonywalnym przy użyciu chmod. Następnie uruchomiłem go w terminalu i otrzymałem następujący błąd:

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

Następnie dodałem Terminal do Preferencji systemowych > Bezpieczeństwo i prywatność > Prywatność > Dostępność i uruchomiłem go ponownie. Następnie poprawnie przetworzył skrypt i zwrócił:

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

Oczywiście otworzyło to Preferencje systemowe dla tego celu .

użytkownik3439894
źródło
W moim przypadku osobą dzwoniącą był Alfred 3. Nie był automatycznie dodawany do listy, więc po prostu ręcznie dodałem ją do ułatwień dostępu, a następnie zadzwoniło moje skrypt.
Chris Redford
3
Mam ten sam błąd, mimo że mam terminal w obszarze Bezpieczeństwo i prywatność
Kevin
5

Wystąpił błąd, jak 636:751: execution error: System Events got an error: osascript is not allowed assistive access. (-1719)chociaż uruchomiłem osascriptpolecenie z iTerm 2, które było na liście aplikacji w „Preferencjach systemowych> Bezpieczeństwo i prywatność> Prywatność> Dostępność”.

Przestałem otrzymywać błąd po tym, jak również dodałem aplikację System Events (in /System/Library/CoreServices/) do tej listy.

nisetama
źródło
Zaskakujące, że to zadziałało. Chciałbym wiedzieć, dlaczego. Najpierw dodałem wszystkie inne bardziej oczywiste aplikacje ... bezskutecznie.
Del Brown
Jesteś moim ratownikiem.
alswl
1

Kluczowym punktem w połączonej odpowiedzią jest :

Po pierwszym załadowaniu lub uruchomieniu LaunchAgents pojawi się monit o ustawienie dostępu wspomagającego w Preferencjach systemowych. Jeśli masz już otwarte Preferencje systemowe, nie zrobisz tego, ale plik tekstowy Skrypt zostanie dodany do listy.

Teraz musisz tylko zaznaczyć pole wyboru, aby na to pozwolić.

Krok 1 polega na otwarciu karty bezpieczeństwa i zezwoleniu aplikacji skryptowej lub indywidualnym skryptom na automatyzację interfejsu.

wprowadź opis zdjęcia tutaj

Krok 2 - zyskaj i unikaj błędu -1728

bmike
źródło
1
Niestety, tak naprawdę nie działa to dla mnie z LaunchAgent, moje logi pokazują się execution error: System Events got an error: osascript is not allowed assistive access. (-1719)i Preferencje systemowe nie wyświetlają monitu o zezwolenie na dostęp pomocniczy. macOS 10.12.6
swrobel
Spróbuj także dodać osascript do „Assistive Access” - przynajmniej wewnętrznie, AppleScript traktuje „osascript” NIE tylko jako polecenie, ale jako swój własny proces. . . . Wklej następujący kod do 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'". . . a zobaczysz listę procesów (niestety „pozbawionych ograniczników”) z „osascript” pod koniec.
clemsam lang