Como usar o psexec para iniciar a instalação ou outra tarefa que requer interação do UAC?

7

Estou tentando iniciar instalações remotamente e gostaria de não desativar o UAC. Se eu iniciar os processos remotamente usando o psexec, o instalador ficará parado aguardando o prompt do UAC. Outras tarefas, como a limpeza de arquivos temporários, a reinicialização de serviços, etc, me trarão erros de acesso negado. Existe alguma maneira, o psexec pode andar pelo UAC, como fazer login com o Administrador, mas com os privilégios TrustedInstaller ou algo assim?

A propósito, estou direcionando o Windows 2008 R2, mas acho que esta questão se aplica ao Vista, 2008 e Windows 7 também.

    
por Miguel Ventura 08.10.2009 / 16:38

7 respostas

1

Você precisa usar a opção -u e especificar uma conta que tenha acesso de administrador local a essa máquina (uma conta local, uma conta de administrador de domínio, etc.)

 -u         Specifies optional user name for login to remote
            computer.

Por exemplo

psexec \pc999.myDomain.loc -u pc999\Administrator <your exe >

    
por 08.10.2009 / 17:07
12

O parâmetro -h é a chave aqui: sem ele, o psexec não executa o comando com privilégios elevados do UAC no Windows Vista e acima:

C:\Users\merickson>psexec /?

PsExec v1.97 - Execute processes remotely
Copyright (C) 2001-2009 Mark Russinovich
Sysinternals - www.sysinternals.com

PsExec executes a program on a remote system, where remotely executed console
applications execute interactively.

Usage: psexec [\computer[,computer2[,...] | @file]][-u user [-p psswd]
 [-n s][-l][-s|-e][x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>]
 [-a n,n,...] cmd [arguments]

...

 -h         If the target system is Vista or higher, has the process
            run with the account's elevated token, if available.
...

(editar: evidência adicional da existência da opção -h, por comentário abaixo)

    
por 15.04.2010 / 17:35
1

Aparentemente, meu processo estava sendo bloqueado não porque o psexec estivesse ignorando o login fornecido.

Não sei por que, mas usando o Vista como uma máquina cliente, as credenciais transmitidas com os parâmetros -u e -p não estavam sendo usadas para acessar o servidor (descobertas usando o visualizador de eventos no servidor). Em vez disso, era sempre o usuário conectado que estava sendo usado. Aparentemente, isso é o que acontece quando as duas máquinas estão no mesmo domínio.

Tive que abrir o gerenciador de credenciais (Painel de controle > Contas de usuário > Gerenciar suas senhas de rede) e criar um novo conjunto para a máquina de destino com o usuário que desejava usar para o psexec.

    
por 09.10.2009 / 01:56
1
psexec \<remote IP> -u user -p password -h netsh advfi
rewall firewall add rule name="AllowRDP " dir=in action=allow protocol=TCP local
port=3389
    
por 02.08.2014 / 12:04
0

Você pode usar o sinalizador -s para executar o comando no contexto SYSTEM. Isso presumindo que você ainda não esteja executando o comando com outras credenciais que precisam ser acessadas em outro lugar na rede.

    
por 08.10.2009 / 16:53
0

Eu tenho o mesmo problema. O comando que eu executo é psexec.exe -accepteula -n 120 \ MyServer -u usuário -p senha cmd "/ C dir

Estou usando o win2008 r2 e o target (MyServer) é o win2008 r2 também.

A sugestão de Miguel funcionou para mim, depois de adicionar as credenciais que funcionou bem.

    
por 24.03.2011 / 17:49
0

Eu também tive esse problema, mas a solução de Miguel de adicionar as credenciais ao gerenciador de credenciais resolveu o problema para mim

Executando o Windows 7 de 32 bits no cliente e no servidor em um domínio usando o psexec 1.98

Eu me pergunto se isso é um bug, parece que sim.

    
por 03.06.2010 / 10:42