Pages

Wednesday, April 30, 2014

Pedir previlégios de administrador a partir dum ficheiro bat

Normalmente quando crio scripts para automatizar algumas tarefas de build\deploy tenho sempre de avisar as pessoas parta não se esquecerem de correr com privilégios de administrador.

Para evitar problemas porque se esquecem ou porque eu me esqueço de avisar estive a procura e encontrei este script para fazer a verificação se esta a correr num contexto de administrador e caso não esteja lançar a janela de UAC (User Account Control) do windows.

 @echo off  
   
 :: BatchGotAdmin  
 :-------------------------------------  
 REM --> Check for permissions  
 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"  
   
 REM --> If error flag set, we do not have admin.  
 if '%errorlevel%' NEQ '0' (  
   echo Requesting administrative privileges...  
   goto UACPrompt  
 ) else ( goto gotAdmin )  
   
 :UACPrompt  
   echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"  
   set params = %*:"=""  
   echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"  
   
   "%temp%\getadmin.vbs"  
   del "%temp%\getadmin.vbs"  
   exit /B  
   
 :gotAdmin  
   pushd "%CD%"  
   CD /D "%~dp0"  
 :--------------------------------------  
   
 <YOUR BATCH SCRIPT HERE>  

Assim mesmo que façam um duplo click e corram o script ele vai pedir privilégios de administrador! :)


FONTE: How to request Administrator access inside a batch file

No comments:

Post a Comment