@echo off setlocal EnableDelayedExpansion title Windows Freeze Updates Options - Bloqueo / Desbloqueo de Windows Update set "WU=HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" set "CV=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" :: --- Autoelevacion a administrador --- net session >nul 2>&1 || ( powershell -Command "Start-Process '%~f0' -Verb RunAs" >nul 2>&1 exit /b ) :menu :: Detectar version instalada AHORA MISMO set "ACTUAL=" for /f "tokens=3" %%a in ('reg query "%CV%" /v DisplayVersion 2^>nul ^| findstr /i "DisplayVersion"') do set "ACTUAL=%%a" :: Detectar si hay bloqueo activo y en que version set "FIJADA=" for /f "tokens=3" %%a in ('reg query "%WU%" /v TargetReleaseVersionInfo 2^>nul ^| findstr /i "TargetReleaseVersionInfo"') do set "FIJADA=%%a" if defined FIJADA ( set "ESTADO=BLOQUEADO en !FIJADA!" ) else ( set "ESTADO=DESBLOQUEADO (Windows gestiona libremente)" ) cls echo ============================================================ echo Windows Freeze Updates Options echo Control de Windows Update echo ============================================================ echo. echo Version instalada ahora : %ACTUAL% echo Estado : %ESTADO% echo. echo [1] BLOQUEAR - fijar en %ACTUAL%, cortar auto-update y borrar pendientes echo [2] DESBLOQUEAR - liberar Windows (para instalar a mano cuando quieras) echo [3] ESTADO - ver detalle de la configuracion echo [4] APAGAR SIN ACTUALIZAR - apaga saltandose la actualizacion montada echo [0] Salir echo. set /p "op=Elige una opcion: " if "%op%"=="1" goto lock if "%op%"=="2" goto unlock if "%op%"=="3" goto status if "%op%"=="4" goto shutdownnoupd if "%op%"=="0" goto :eof goto menu :lock if not defined ACTUAL ( echo. echo ERROR: no se pudo detectar la version instalada. No se aplica nada. echo. pause goto menu ) echo. echo Fijando Windows en la version actual: %ACTUAL% ... reg add "%WU%" /v TargetReleaseVersion /t REG_DWORD /d 1 /f >nul reg add "%WU%" /v TargetReleaseVersionInfo /t REG_SZ /d "%ACTUAL%" /f >nul reg add "%WU%" /v ProductVersion /t REG_SZ /d "Windows 11" /f >nul reg add "%WU%\AU" /v NoAutoUpdate /t REG_DWORD /d 1 /f >nul echo Limpiando descargas pendientes... net stop wuauserv >nul 2>&1 net stop bits >nul 2>&1 net stop dosvc >nul 2>&1 net stop usosvc >nul 2>&1 if exist "%WINDIR%\SoftwareDistribution\Download" ( rd /s /q "%WINDIR%\SoftwareDistribution\Download" >nul 2>&1 md "%WINDIR%\SoftwareDistribution\Download" >nul 2>&1 ) net start bits >nul 2>&1 net start wuauserv >nul 2>&1 echo. echo HECHO. Windows queda anclado en %ACTUAL% (ni sube ni baja) y no se actualizara solo. echo Se ha vaciado la cola de actualizaciones descargadas pendientes. echo. pause goto menu :unlock echo. echo Desbloqueando (borrando politicas)... reg delete "%WU%" /f >nul 2>&1 net stop wuauserv >nul 2>&1 & net start wuauserv >nul 2>&1 echo. echo HECHO. Windows vuelve a gestionar las actualizaciones con normalidad. echo Ya puedes actualizar a mano (ISO / setup.exe) o dejar el automatico como antes. echo Si luego quieres volver a congelar, ejecuta [1] otra vez. echo. pause goto menu :status echo. echo --- Estado actual --- echo Version instalada: %ACTUAL% echo. echo Politicas escritas: reg query "%WU%" /v TargetReleaseVersion 2>nul reg query "%WU%" /v TargetReleaseVersionInfo 2>nul reg query "%WU%\AU" /v NoAutoUpdate 2>nul echo --------------------- echo. pause goto menu :shutdownnoupd echo. echo Se apagara el equipo SALTANDOSE cualquier actualizacion montada. echo (No la elimina: Windows podra volver a ofrecerla mas adelante.) echo. set /p "conf=Seguro que quieres apagar ahora? (S/N): " if /i "%conf%"=="S" ( echo Apagando... shutdown /s /f /t 0 goto :eof ) echo Cancelado. timeout /t 1 >nul goto menu