o osascript não é permitido acesso assistencial. (-1728)


15

Roteiro:

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

Como faço para fornecer acesso assistencial a esse script? Ao executar isso no 'Editor de scripts', tudo o que precisa é que o 'Editor de scripts' seja ativado em 'Acessibilidade' em 'Segurança e privacidade'.

Mas preciso executar isso (e alguns outros arquivos de script semelhantes) para ser executado sem a intervenção do usuário. Tentei salvar o arquivo nos formatos .sh, .app, .scpt, .applescript e execute o terminal como sudo sem nenhuma sorte.

Já passei por outras perguntas como essa e outras sem nenhuma ajuda.

EDIT: Obrigado pela resposta pessoal. Já tentamos esses métodos e eles funcionam sem qualquer dúvida e é aí que está o problema. Temos muitas máquinas mac para ativá-las manualmente. Esperávamos algum comando que adicionasse o Terminal à lista com a permissão do usuário (como o UAC no Windows) ou, se possível, silenciosamente.

Respostas:


12

Se você executar AppleScript código via osascriptno Terminal , então você precisa adicionar Terminal para Preferências do Sistema > Segurança e privacidade > Privacidade > Acessibilidade , para permitir o acesso de assistência.


Peguei seu código , salvei-o em um arquivo chamado testcodee o tornei executável usando chmod. Em seguida, executei-o no Terminal e recebi o seguinte erro:

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

Em seguida, adicionei o Terminal às Preferências do sistema > Segurança e privacidade > Privacidade > Acessibilidade e executei-o novamente. Em seguida, processou o script corretamente e retornou:

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

É claro que abriu as Preferências do Sistema para esse destino .


No meu caso, o chamador era Alfred 3. Ele não era adicionado automaticamente à lista, então eu o adicionei manualmente ao Accessibility e, em seguida, minha chamada de script funcionou.
21818 Chris Redford

3
Eu tenho o mesmo erro mesmo, embora eu tenho terminal Segurança e Privacidade
Kevin

5

Ocorreu um erro como 636:751: execution error: System Events got an error: osascript is not allowed assistive access. (-1719)se eu tivesse executado o osascriptcomando do iTerm 2, que estava na lista de aplicativos em "Preferências do sistema> Segurança e privacidade> Privacidade> Acessibilidade".

Parei de receber o erro depois de adicionar o aplicativo System Events (in /System/Library/CoreServices/) a essa lista.


Surpreendente que isso funcionou. Gostaria de saber o porquê. Eu adicionei todas as outras aplicações mais óbvias primeiro ... sem sucesso.
Del Brown

Você é meu salva-vidas.
alswl

1

O ponto chave na resposta vinculada é :

Quando você carrega ou executa o LaunchAgents pela primeira vez, você recebe uma solicitação para definir o Acesso Assistido nas Preferências do Sistema. Se você já possui as preferências do sistema abertas, não o fará, mas o arquivo de texto Script será adicionado à lista.

Agora você só precisa marcar a caixa de seleção para permitir isso.

A etapa 1 é abrir a guia de segurança e permitir que o aplicativo de script ou os scripts individuais tenham permissão para automatizar a interface.

insira a descrição da imagem aqui

Etapa 2 - lucre e evite o erro -1728


1
Infelizmente, isso realmente não funciona para mim com um LaunchAgent, meus logs são exibidos execution error: System Events got an error: osascript is not allowed assistive access. (-1719)e eu não sou solicitado pelas Preferências do Sistema para permitir acesso assistencial. macOS 10.12.6
swrobel

Tente adicionar também o osascript ao "Acesso assistido" - pelo menos internamente, o AppleScript trata o "osascript" não apenas como um comando, mas como um processo próprio. . . . Cole o seguinte código no 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 você verá uma lista de processos (infelizmente não "delimitados") com "osascript" no final.
clemsam lang
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.