diff --git a/disable-dnscache-service-win.bat b/disable-dnscache-service-win.bat new file mode 100644 index 000000000..2aaef6ddd --- /dev/null +++ b/disable-dnscache-service-win.bat @@ -0,0 +1,43 @@ +@echo off + +title Disable DNS Cache Service + +:: Check if we are an administrator. If not, exit immediately. +:: BatchGotAdmin +:: 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 the error flag set, we do not have admin rights. +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" + +wscript.exe "%TEMP%\getadmin.vbs" +del "%TEMP%\getadmin.vbs" +exit /b + +:gotAdmin + +:SCset +:: VALUE +:: 2 (Automatic) (DEFAULT) +:: 4 (Disabled) (to prevent network freeze after applying a huge hosts file) +:: +:: See https://superuser.com/a/1277960 +:: +reg add "HKLM\SYSTEM\CurrentControlSet\services\Dnscache" /v Start /t REG_DWORD /d 4 /f +echo Reboot your system now! +echo. +pause diff --git a/disable-dnscache-service-win.cmd b/disable-dnscache-service-win.cmd deleted file mode 100644 index 7fdd236cc..000000000 --- a/disable-dnscache-service-win.cmd +++ /dev/null @@ -1,49 +0,0 @@ -@ECHO OFF -:: 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" -) - -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" - goto SCset - -:SCset -:: https://superuser.com/a/1217703 -:: https://stackoverflow.com/a/133926 -::sc config Dnscache start= disabled -::sc stop Dnscache - -:: VALUE -:: 2 (Automatic) (DEFAULT) -:: 4 (Disabled) (prevent freeze network after applying huge hosts file) -:: -:: Latest changes in security Windows 10 denied access to changing services via other tools except registry hack -:: -:: See https://superuser.com/a/1277960 -:: -REG add "HKLM\SYSTEM\CurrentControlSet\services\Dnscache" /v Start /t REG_DWORD /d 4 /f -echo "Reboot your system now!" -echo . -@PAUSE diff --git a/readme.md b/readme.md index a3664b1f7..e4848e5cf 100644 --- a/readme.md +++ b/readme.md @@ -401,9 +401,9 @@ You can also refer to the "Third-Party Hosts Managers" section for further recom ### Warning: Using this `hosts` file in Windows may require disabling DNS Cache service Windows has issues with larger hosts files. Recent changes in security within Windows 10 denies -access to changing services via other tools except registry hacks. Use the `disable-dnscache-service-win.cmd` +access to changing services via other tools except registry hacks. Use the `disable-dnscache-service-win.bat` file to make proper changes to the Windows registry. You will need to reboot your device once that's done. -See the [the comments within the `cmd` file](https://github.com/StevenBlack/hosts/blob/master/disable-dnscache-service-win.cmd) +See the [the comments within the `bat` file](https://github.com/StevenBlack/hosts/blob/master/disable-dnscache-service-win.bat) for more details. ## Reloading hosts file