Instalar aplicativos que exigem privilégios administrativos pela rede no Windows 10 em máquinas de usuários que não possuem privilégio de administrador

Autor: Silvio Garbes

Cenário

Você precisa instalar um aplicativo na máquina do usuário. Por exemplo via GPO.

O usuário não tem privilégio para instalar aplicativos.

O aplicativo necessita de privilégios administrativos.

Aplicativos necessários

Procedimento

    1. Criei uma pasta na rede em que todos os usuários tem acesso somente leitura, por exemplo em "\\ad01.silviogarbes.corp\gpo\softwares"
      1. Adicione nessa pasta os arquivos "PsExec.exe" e o instalador original que necessita de privilégio elevado, ex.: "InstaladorOriginal.exe" ou "InstaladorOriginal.msi"
    2. Crie um arquivo "install.bat" que fará a cópia dos arquivos "PsExec.exe" e "InstaladorOriginal.exe" para a máquina do usuário. Abaixo segue dois exemplos:
      1. @echo off
      2. md c:\temp
      3. copy \\ad01.silviogarbes.corp\gpo\softwares\PsExec.exe c:\temp\PsExec.exe /y
      4. copy \\ad01.silviogarbes.corp\gpo\softwares\InstaladorOriginal.exe c:\temp\InstaladorOriginal.exe /y
      5. c:\temp\PsExec.exe -u silviogarbes.corp\administrador -p MinhaSenhaDificilContem10@@EmBinario c:\temp\InstaladorOriginal.exe
      6. del c:\temp\PsExec.exe
      7. del c:\temp\InstaladorOriginal.exe
      8. @echo off
      9. md c:\temp
      10. copy \\ad01.silviogarbes.corp\gpo\softwares\PsExec.exe c:\temp\PsExec.exe /y
      11. copy \\ad01.silviogarbes.corp\gpo\softwares\BIBLIOTECARM.MSI c:\temp\BIBLIOTECARM.MSI /y
      12. c:\temp\PsExec.exe -u silviogarbes.corp\administrador -p MinhaSenhaDificilContem10@@EmBinario reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
      13. c:\temp\PsExec.exe -u silviogarbes.corp\administrador -p MinhaSenhaDificilContem10@@EmBinario msiexec.exe /i "c:\temp\BIBLIOTECARM.MSI" /quiet ALLUSERS=2 INSTALLDIR=c:\totvs
      14. copy \\ad01.silviogarbes.corp\gpo\softwares\rm\Alias.dat C:\totvs\CorporeRM\RM.Net /y
      15. c:\temp\PsExec.exe -u silviogarbes.corp\administrador -p MinhaSenhaDificilContem10@@EmBinario reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1 /f
      16. del c:\temp\PsExec.exe
      17. del c:\temp\BIBLIOTECARM.MSI
    3. Nesse caso passamos a senha no arquivo "install.bat". Para que o usuário não possa ver a senha temos que converter o arquivo ".bat" em ".exe". Com isso abra o programa "Bat To Exe Converter".
    1. Pronto, agora ao executar o "install.exe" ele irá elevar os privilégios e irá executar o "InstaladorOriginal.exe" para fazer a instalação.
    2. Agora existe um problema com o nome do arquivo gerado. Caso ele tenha alguma das seguintes palavras ele vai solicitar a elevação de privilégios:
      1. instal.exe
      2. install.exe
      3. patch.exe
      4. setup.exe
      5. update.exe
    3. Para isso necessitamos adicionar o manifesto no arquivo "install.exe" gerado.
      1. Crie um arquivo chamado "install.exe.manifest" e adicione o seguinte conteúdo:
        1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        3. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        4. <security>
        5. <requestedPrivileges>
        6. <!-- Make sure that UAC believes
        7. that it does not require administrative privilege -->
        8. <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
        9. </requestedPrivileges>
        10. </security>
        11. </trustInfo>
        12. </assembly>
      2. Agora precisaremos do arquivo "mt.exe" para modificar os privilégios. Abra o prompt de comando e execute
        1. cd "c:\temp\"
        2. mt.exe -nologo -manifest "install.exe.manifest" -outputresource:"install.exe;#1"

Resumo

    1. Adicionar os arquivos "PsExec.exe" e "InstaladorOriginal.exe" no servidor de arquivos que possui uma pasta somente leitura.
    2. Criar um arquivo ".bat" fazendo a cópia do "PsExec.exe" e "InstaladorOriginal.exe" para o c:\temp\ da máquina do usuário e executar o instalador com privilégio administrativo usando o PsExec.
    3. Converter o ".bat" em ".exe"
    4. Adicionar o manifesto ao arquivos ".exe" gerado.