sexta-feira, 3 de julho de 2020

Script de Login como administrador

Procurei pela internet varias informações sobre, mas a melhor maneira que encontrei ate hoje é desta maneira, ela parece uma gambiarra, mas funciona direitinho...

Eu criei da seguinte maneira

  • Criar um script geral_elev.bat na pasta NETLOGON, onde nele vai constar todos comandos que seja executados como administrador
  • Criar um script geral.bat na pasta NETLOGON onde nele consta os comandos abaixo (e claro, mais o que desejar colocar)
    1. Comandos de desejar
    2. copy \\SERVIDOR\netlogon\geral_elev.bat %PUBLIC% /y >nul 2>&1
    3. copy \\SERVIDOR\netlogon\geral_elev.exe %PUBLIC% /y >nul 2>&1
    4. c:
    5. cd %PUBLIC%
    6. geral_elev.exe
    7. del %PUBLIC%\geral_elev.bat /f 
    8. del %PUBLIC%\geral_elev.exe /f
Explicando linha a linha
    • Linha 1: Aqui vc insere o que desejar, mapeamentos, copias de arquivos, padrão do seu script
    • Linha 2: Copia o script onde tem os comandos que deseja que seja executado como administrador para pasta publica
    • Linha 3: Copia o executável responsável por executar o script acima como administrador para pasta publica (em seguida mostro como fazer)
    • Linha 4: Vai até o C:
    • Linha 5: Vai até a pasta publica comum a todos usuários
    • Linha 6: Executa o programa onde eleva o script geral_elev.bat (em seguida mostro como fazer)
    • Linha 7 e 8: Exclui os arquivos copiados anteriormente
  • Obs: no final dos comandos possui ">nul 2>&1", este serve para que não seja mostrado o resultado do comando, ficando uma tela mais limpa para o usuário.

Como fazer o executável que eleva o script geral_elev.bat
Para criar o geral_elev.exe, programa responsável por elevar o geral_elev.bat voce precisará o PSEXEC (facilmente achado na internet) e do WinRar
    • Clique o no executável PSexec.exe com o botão direito e selecione a opção "Add to archive" do WinRar
    • Na tela que abrir selecione "Create SFX archive" e mude o nome do arquivo para "geral_elev.exe", após clique na aba "Advanced"
    • Em "Advanced" clique em "SFX options"
    • Na aba "Setup" em "Run after program" coloque a linha abaixo
      • psexec -accepteula -u DOMINIO\USUARIO_ADMINISTRADOR -p SENHA "%public%\geral_elev.bat"
    • Na aba "Modes" selecione "Unpack to temporary folder" e "Hide all", estas opções fazem com que seja extraído o arquivo PSEXEC.exe em um local temporário e que não seja mostrado nenhuma tela de dialogo
    • Clique em OK e OK de novo para ser criado o arquivo "geral_elev.bat"
    • Copie o arquivo "geral_elev.bat" para o NETLOGON, junto com os scripts "geral.bat" e "geral_elev.bat"
Pronto..... agora todos comandos que vc colocar no script geral_elev.bat será executado como o usuário informado no "Run after program", desta maneira caso queira adicionar um novo comando no script geral_elev.bat não será necessário recriar o arquivo EXE.