Como posso fazer o runas.exe (Windows) aguardar até que o programa que ele inicia saia?

5

Ou seja, eu quero que o runas saia apenas após o programa que ele executa sair.

Não há argumento /wait para runas.exe. Eu tentei muitas permutações de start /wait com ele e nada funciona.

Eu tenho que usar runas porque eu preciso de privilégios elevados para o programa, então eu preciso começar assim:

runas /user:administrator /savedcred /env update.exe

onde update.exe é o meu programa. runas está sendo chamado de um Bash do Cygwin, para torná-lo ainda mais complicado.

Estou no servidor 2008 R2.

Bem, esta é uma maneira de resolver isso. Ele usa o programa Sysinternals pslist e o Bash:

do_update()
{
if test -d c:/; then
    case 'hostname' in
    thor*)
        update="runas /user:administrator /savedcred /env \".\update.exe\""
        ;;
        *)  update="./update.exe" ;;
    esac
    $update
    while pslist -e update > /dev/null 2>&1; do
        echo waiting for update.exe to finish...
    sleep 3
    done
else
    ./update.sh
fi
}

É horrivelmente hacky, principalmente porque não pode obter o status de saída do programa de volta para o chamador. Isso é um problema enorme, IMO.

    
por e40 20.07.2011 / 20:58

1 resposta

2

RunAs não eleva um processo, mas apenas executa o processo com credenciais de usuário de destino. Mas isso não executa o processo com um token elevado. O que você está tentando fazer com Runas é impossível.

Para fazer isso, você precisa usar o PowerShell, VBScript ou baixar os PowerToys de elevação da Technet.

Editar:

Por exemplo, digite:

runas /user:<i>Workadmin</i> cmd

Em seguida, execute fsutils, que requer privilégios de administrador; acesso negado.

Ou tente:

runas /user:<i>workadmin</i> "mmc.exe gpedit.msc"

Acesso negado.

Estou surpreso que você não tenha notado isso porque causa todos os tipos de problemas ao executar scripts. Se os scripts iniciarem outros scripts que, em seguida, exigem permissões elevadas, eles serão quebrados. Esse também é um problema com os scripts VBScripts e PowerShell.

    
por 12.08.2011 / 12:01

Tags