osascript no tiene acceso de asistencia. (-1728)

15

Guión:

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

¿Cómo proporciono acceso de asistencia a este script? Al ejecutar esto a través de 'Script Editor', todo lo que necesita es 'Script Editor' para habilitarse en 'Accesibilidad' en 'Seguridad y privacidad'.

Pero necesito ejecutar esto (y algunos otros archivos de script similares) para ejecutarlo sin la intervención del usuario. He intentado guardar el archivo en formatos .sh, .app, .scpt, .applescript y ejecutarlo a través de terminal como sudo sin suerte.

He pasado por otras preguntas como esta y otras sin ninguna ayuda.

EDITAR: Gracias por la respuesta chicos. Ya hemos probado estos métodos y funcionan sin ninguna duda y ahí es donde radica el problema. Tenemos demasiadas máquinas Mac para activarlas y habilitarlas manualmente. Esperábamos algún comando que agregara Terminal a la lista con el permiso del usuario (algo así como UAC en Windows) o si es posible en silencio.

John Shepard
fuente

Respuestas:

12

Si ejecuta el código AppleScript a través de Terminal , debe agregar Terminal a Preferencias del sistema > Seguridad y privacidad > Privacidad > Accesibilidad , para permitir el acceso de asistencia.osascript


Tomé su código , lo guardé en un archivo llamado testcodey lo hice ejecutable usando chmod. Luego lo ejecuté en la Terminal y recibí el siguiente error:

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

Luego agregué Terminal a Preferencias del sistema > Seguridad y privacidad > Privacidad > Accesibilidad y lo ejecuté nuevamente. Luego procesó el script correctamente y devolvió:

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

Por supuesto, abrió las Preferencias del sistema a ese objetivo .

usuario3439894
fuente
En mi caso, la persona que llamó fue Alfred 3. No se agregaba a la lista automáticamente, así que simplemente la agregué manualmente a Accesibilidad y luego funcionó mi llamada de script.
Chris Redford
3
Tengo el mismo error, aunque tengo un terminal en Seguridad y Privacidad
Kevin
5

Recibí un error como 636:751: execution error: System Events got an error: osascript is not allowed assistive access. (-1719)si ejecutara el osascriptcomando de iTerm 2 que estaba en la lista de aplicaciones en "Preferencias del sistema> Seguridad y privacidad> Privacidad> Accesibilidad".

Dejé de recibir el error después de agregar también la aplicación System Events (in /System/Library/CoreServices/) a esa lista.

nisetama
fuente
Sorprendente que esto funcionó. Ojalá supiera por qué. Agregué todas las otras aplicaciones más obvias primero ... en vano.
Del Brown
Eres mi salvavidas.
alswl
1

El punto clave en la respuesta vinculada es :

Cuando cargue o ejecute LaunchAgents por primera vez, recibirá un mensaje para configurar el Acceso de asistencia en las Preferencias del sistema. Si ya tiene abiertas las preferencias del Sistema, no lo hará, pero el archivo de texto de Script se agregará a la lista.

Ahora solo tiene que marcar su casilla de verificación para permitirlo.

El paso 1 es abrir la pestaña de seguridad y permitir que su aplicación de script o el permiso de los scripts individuales automaticen la interfaz.

ingrese la descripción de la imagen aquí

Paso 2: obtenga ganancias y evite el error -1728

bmike
fuente
1
Desafortunadamente, esto no funciona para mí con un LaunchAgent, mis registros se muestran execution error: System Events got an error: osascript is not allowed assistive access. (-1719)y las Preferencias del sistema no me solicitan que permita el acceso de asistencia. macOS 10.12.6
swrobel
Intente agregar también osascript a "Assistive Access" - al menos internamente, AppleScript trata el "osascript" NO simplemente como un comando sino como un proceso en sí mismo. . . . Pegue el siguiente código en 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'". . . y verá una lista de procesos (lamentablemente no "delimitados") con "osascript" hacia su final.
clemsam lang