diff --git a/updateHostsWindows.bat b/updateHostsWindows.bat index 0d7bd86d0..2c4415543 100644 --- a/updateHostsWindows.bat +++ b/updateHostsWindows.bat @@ -1,3 +1,4 @@ +:: :: This script will first create a backup of the original or current hosts :: file and save it in a file titled "hosts.skel" :: @@ -5,26 +6,56 @@ :: will be copied to the proper path. Next, the DNS cache will be refreshed. :: :: THIS BAT FILE MUST BE LAUNCHED WITH ADMINISTRATOR PRIVILEGES +:: Admin privileges script based on https://stackoverflow.com/a/10052222 +:: +:: @ECHO OFF TITLE Update Hosts :: Check if we are administrator. If not, exit immediately. +:: BatchGotAdmin +:------------------------------------- +REM --> Check for permissions + IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" ( +>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system" +) ELSE ( >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" -if %ERRORLEVEL% NEQ 0 ( - ECHO This script must be run with administrator privileges! - ECHO Please launch command prompt as administrator. Exiting... - EXIT /B 1 ) -if not exist "%WINDIR%\System32\drivers\etc\hosts.skel" ( - COPY %WINDIR%\System32\drivers\etc\hosts %WINDIR%\System32\drivers\etc\hosts.skel -) +REM --> If error flag set, we do not have admin. +if '%errorlevel%' NEQ '0' ( + echo Requesting administrative privileges... + goto UACPrompt +) else ( goto gotAdmin ) -:: Update hosts file -python updateHostsFile.py -a +: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" -:: Move new hosts file in-place -COPY hosts %WINDIR%\System32\drivers\etc\ + "%temp%\getadmin.vbs" + del "%temp%\getadmin.vbs" + exit /B -:: Flush the DNS cache -ipconfig /flushdns +:gotAdmin + pushd "%CD%" + CD /D "%~dp0" + +:BackupHosts + :: Backup default hosts file + if not exist "%WINDIR%\System32\drivers\etc\hosts.skel" ( + COPY %WINDIR%\System32\drivers\etc\hosts %WINDIR%\System32\drivers\etc\hosts.skel + ) + +:UpdateHosts + :: Update hosts file + python updateHostsFile.py --auto --minimise + + :: Move new hosts file in-place + COPY hosts %WINDIR%\System32\drivers\etc\ + + :: Flush the DNS cache + ipconfig /flushdns + + :: Summary note + pause