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
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
Aplicativos necessários
- PsExec: Consegue elevar os privilégios para executar um aplicativo
- https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
- Bat To Exe Converter: Converte um arquivo ".bat" em ".exe"
- www.f2ko.de/en/b2e.php
- MT: Adiciona o manifesto ao um arquivo para que não necessite elevar o privilégio
- http://originaldll.com/file/mt.exe/21861.html
Procedimento
Procedimento
- Criei uma pasta na rede em que todos os usuários tem acesso somente leitura, por exemplo em "\\ad01.silviogarbes.corp\gpo\softwares"
- Adicione nessa pasta os arquivos "PsExec.exe" e o instalador original que necessita de privilégio elevado, ex.: "InstaladorOriginal.exe" ou "InstaladorOriginal.msi"
- 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:
- @echo off
- md c:\temp
- copy \\ad01.silviogarbes.corp\gpo\softwares\PsExec.exe c:\temp\PsExec.exe /y
- copy \\ad01.silviogarbes.corp\gpo\softwares\InstaladorOriginal.exe c:\temp\InstaladorOriginal.exe /y
- c:\temp\PsExec.exe -u silviogarbes.corp\administrador -p MinhaSenhaDificilContem10@@EmBinario c:\temp\InstaladorOriginal.exe
- del c:\temp\PsExec.exe
- del c:\temp\InstaladorOriginal.exe
- @echo off
- md c:\temp
- copy \\ad01.silviogarbes.corp\gpo\softwares\PsExec.exe c:\temp\PsExec.exe /y
- copy \\ad01.silviogarbes.corp\gpo\softwares\BIBLIOTECARM.MSI c:\temp\BIBLIOTECARM.MSI /y
- 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
- c:\temp\PsExec.exe -u silviogarbes.corp\administrador -p MinhaSenhaDificilContem10@@EmBinario msiexec.exe /i "c:\temp\BIBLIOTECARM.MSI" /quiet ALLUSERS=2 INSTALLDIR=c:\totvs
- copy \\ad01.silviogarbes.corp\gpo\softwares\rm\Alias.dat C:\totvs\CorporeRM\RM.Net /y
- 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
- del c:\temp\PsExec.exe
- del c:\temp\BIBLIOTECARM.MSI
- 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".
- Pronto, agora ao executar o "install.exe" ele irá elevar os privilégios e irá executar o "InstaladorOriginal.exe" para fazer a instalação.
- 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:
- instal.exe
- install.exe
- patch.exe
- setup.exe
- update.exe
- Para isso necessitamos adicionar o manifesto no arquivo "install.exe" gerado.
- Crie um arquivo chamado "install.exe.manifest" e adicione o seguinte conteúdo:
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
- <security>
- <requestedPrivileges>
- <!-- Make sure that UAC believes
- that it does not require administrative privilege -->
- <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
- </requestedPrivileges>
- </security>
- </trustInfo>
- </assembly>
- Agora precisaremos do arquivo "mt.exe" para modificar os privilégios. Abra o prompt de comando e execute
- cd "c:\temp\"
- mt.exe -nologo -manifest "install.exe.manifest" -outputresource:"install.exe;#1"
- Crie um arquivo chamado "install.exe.manifest" e adicione o seguinte conteúdo:
Resumo
Resumo
- Adicionar os arquivos "PsExec.exe" e "InstaladorOriginal.exe" no servidor de arquivos que possui uma pasta somente leitura.
- 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.
- Converter o ".bat" em ".exe"
- Adicionar o manifesto ao arquivos ".exe" gerado.