A osascript non è consentito l'accesso assistivo. (-1728)


15

script:

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

Come posso fornire accesso assistito a questo script? Quando si esegue questo tramite "Script Editor", è sufficiente abilitare "Script Editor" in "Accessibilità" in "Sicurezza e privacy".

Ma devo eseguire questo (e alcuni altri file di script simili) per essere eseguito senza l'intervento dell'utente. Ho provato a salvare il file in formato .sh, .app, .scpt, .applescript ed eseguito tramite terminale come sudo senza fortuna.

Ho affrontato altre domande come questa e altre senza alcun aiuto.

EDIT: Grazie per la risposta ragazzi. Abbiamo già provato questi metodi e funzionano senza alcun dubbio ed è qui che sta il problema. Abbiamo troppe macchine mac per andare in giro e abilitarle manualmente. Speravamo in qualche comando che aggiungesse Terminale all'elenco con il permesso dell'utente (tipo di UAC in Windows) o se possibile in silenzio.

Risposte:


12

Se esegui il codice AppleScript tramite in Terminale , devi aggiungere Terminale a Preferenze di Sistema > Sicurezza e Privacy > Privacy > Accessibilità , per consentirne l'accesso assistivo.osascript


Ho preso il tuo codice , l'ho salvato in un file chiamato testcodee l'ho reso eseguibile con chmod. L'ho quindi eseguito nel terminale e ho ricevuto il seguente errore:

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

Ho quindi aggiunto Terminale a Preferenze di Sistema > Sicurezza e Privacy > Privacy > Accessibilità e l'ho eseguito di nuovo. E poi elaborato la sceneggiatura correttamente e restituito:

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

Naturalmente ha aperto le Preferenze di Sistema a quella destinazione .


Nel mio caso, il chiamante era Alfred 3. Non veniva aggiunto automaticamente all'elenco, quindi l'ho aggiunto manualmente all'Accessibilità e quindi la mia chiamata di script ha funzionato.
Chris Redford,

3
Ho lo stesso errore anche se ho un terminale in Sicurezza e privacy
Kevin,

5

Ho ricevuto un errore come 636:751: execution error: System Events got an error: osascript is not allowed assistive access. (-1719)anche se ho eseguito il osascriptcomando da iTerm 2 che era nell'elenco delle applicazioni in "Preferenze di Sistema> Sicurezza e Privacy> Privacy> Accessibilità".

Ho smesso di ricevere l'errore dopo aver aggiunto anche l'applicazione Eventi di sistema (in /System/Library/CoreServices/) a quell'elenco.


Sorprendente che abbia funzionato. Vorrei sapere perché. Ho aggiunto prima tutte le altre applicazioni più ovvie ... inutilmente.
Del Brown,

Sei il mio salvavita.
alswl

1

Il punto chiave nella risposta collegata è :

Quando carichi o esegui LaunchAgents per la prima volta, ti verrà richiesto di impostare l'accesso assistivo nelle Preferenze di Sistema. Se hai già le preferenze di sistema aperte, il file di testo dello script non verrà aggiunto all'elenco.

Ora devi solo selezionare la relativa casella di controllo per consentirlo.

Il passaggio 1 consiste nell'aprire la scheda di sicurezza e autorizzare l'app di script o l'autorizzazione dei singoli script per automatizzare l'interfaccia.

inserisci qui la descrizione dell'immagine

Passaggio 2: profitto ed evitare l'errore -1728


1
Sfortunatamente questo non funziona in realtà con un LaunchAgent, i miei registri mostrano execution error: System Events got an error: osascript is not allowed assistive access. (-1719)e non mi viene richiesto dalle Preferenze di Sistema per consentire l'accesso assistivo. macOS 10.12.6
swrobel,

Prova ad aggiungere anche osascript ad "Accesso assistito" - almeno internamente, AppleScript tratta "osascript" NON semplicemente come un comando ma come un processo a sé stante. . . . Incolla il seguente codice in 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'". . . e vedrai un elenco di processi (purtroppo non "delimitati") con "osascript" verso la sua fine.
Clemsam Lang
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.