Загрузка данных


@echo off
setlocal EnableExtensions
title GOLDEN DEBLOAT — подготовка эталонного образа

:: =====================================================================
::  GOLDEN DEBLOAT для Windows-10/11 golden-образов (KVM + revert-ферма)
::  Убирает фоновую активность, которая после restore просыпается
::  на КАЖДОМ клоне: апдейтеры, телеметрия, индексация, сканы, Store.
::
::  ПОРЯДОК ПРИМЕНЕНИЯ (важно!):
::   1) Запустить от Администратора ВНУТРИ golden-VM.
::   2) Перезагрузить golden.
::   3) Дать постоять 15-20 мин, открыть Task Manager:
::      CPU — единицы %, Disk ~0 МБ/с, в списке нет Installer/Update*.
::   4) Прогреть, ПЕРЕСНЯТЬ снапшот. Существующие клоны правки
::      получат только через пересоздание/переснапшотивание.
::  Скрипт идемпотентен: повторный запуск безопасен.
::  НЕ ТРОГАЕТ: RpcSs, RpcEptMapper, DcomLaunch, Schedule, LSM, Winmgmt.
:: =====================================================================

net session >nul 2>&1
if errorlevel 1 (
    echo [!] Запусти от Администратора.
    exit /b 1
)

set "SVC=HKLM\SYSTEM\CurrentControlSet\Services"
set "PS=powershell -NoProfile -ExecutionPolicy Bypass -Command"

:: ---------------------------------------------------------------------
call :sec "1/9  Windows Update + Modules Installer (TiWorker) + Delivery Opt."
:: Windows Modules Installer Worker = TiWorker.exe = служба TrustedInstaller:
:: ставит накопившиеся обновления. Глушим вместе с самой WU.
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 1 /f >nul
for %%s in (wuauserv UsoSvc WaaSMedicSvc DoSvc TrustedInstaller) do (
    reg add "%SVC%\%%s" /v Start /t REG_DWORD /d 4 /f >nul
    sc stop %%s >nul 2>&1
)
:: WaaSMedic ("медик") может один раз воскресить wuauserv ДО перезагрузки —
:: поэтому перезагрузка обязательна, потом контрольная проверка (секция 9).

:: ---------------------------------------------------------------------
call :sec "2/9  Store / wsappx (AppXSvc, ClipSVC, InstallService)"
for %%s in (AppXSvc ClipSVC InstallService) do (
    reg add "%SVC%\%%s" /v Start /t REG_DWORD /d 4 /f >nul
    sc stop %%s >nul 2>&1
)

:: ---------------------------------------------------------------------
call :sec "3/9  Телеметрия / диагностика / Error Reporting"
for %%s in (DiagTrack dmwappushservice WerSvc diagsvc) do (
    reg add "%SVC%\%%s" /v Start /t REG_DWORD /d 4 /f >nul
    sc stop %%s >nul 2>&1
)
:: dmwappushservice = тот самый "Device Census" из Task Manager.

:: ---------------------------------------------------------------------
call :sec "4/9  SysMain (prefetch) + Search Indexer"
:: В Win10-1803 служба зовётся Superfetch — пробуем оба имени.
for %%s in (SysMain Superfetch WSearch) do (
    reg add "%SVC%\%%s" /v Start /t REG_DWORD /d 4 /f >nul
    sc stop %%s >nul 2>&1
)
:: WSearch закрывает и "Search (7)" с его 116 МБ RAM и Windows.edb.

:: ---------------------------------------------------------------------
call :sec "5/9  Браузерные апдейтеры: Edge / Chrome / Opera"
:: Службы, включая версионированные имена вида GoogleUpdaterService136...
%PS% "Get-Service | Where-Object { $_.Name -match '^(gupdate|gupdatem|GoogleUpdater|edgeupdate|edgeupdatem|MicrosoftEdgeElevationService)' } | ForEach-Object { try { Stop-Service $_.Name -Force -ErrorAction SilentlyContinue; Set-Service $_.Name -StartupType Disabled -ErrorAction Stop; Write-Host ('  [x] ' + $_.Name) } catch {} }"
:: Политики поверх — переживают пересоздание служб/задач самим браузером:
reg add "HKLM\SOFTWARE\Policies\Microsoft\EdgeUpdate"  /v UpdateDefault /t REG_DWORD /d 0 /f >nul
reg add "HKLM\SOFTWARE\Policies\Google\Update"         /v UpdateDefault /t REG_DWORD /d 0 /f >nul
:: Сам Edge НЕ удаляем: WebView2 нужен другим приложениям. Замороженная
:: версия для изолированной VM — как раз то, что нужно.

:: ---------------------------------------------------------------------
call :sec "6/9  Планировщик: апдейтеры, CEIP, дефраг, WinSAT, Device Info"
%PS% "$p1='EdgeUpdate|GoogleUpdate|GoogleUpdater|Opera.*[Aa]utoupdate'; Get-ScheduledTask | Where-Object { $_.TaskName -match $p1 } | Disable-ScheduledTask -ErrorAction SilentlyContinue"
%PS% "'\Microsoft\Windows\Application Experience\','\Microsoft\Windows\Customer Experience Improvement Program\','\Microsoft\Windows\Feedback\Siuf\','\Microsoft\Windows\Windows Error Reporting\','\Microsoft\Windows\DiskDiagnostic\','\Microsoft\Windows\Device Information\','\Microsoft\Windows\Maintenance\','\Microsoft\Windows\Defrag\','\Microsoft\Windows\WindowsUpdate\' | ForEach-Object { Get-ScheduledTask -TaskPath $_ -ErrorAction SilentlyContinue } | Disable-ScheduledTask -ErrorAction SilentlyContinue"
:: Application Experience = "Microsoft Compatibility Appraiser" — один из
:: главных пожирателей CPU/SATA после бута. Defrag бесполезен: SATA-диск
:: в VM и qcow2-оверлей всё равно не дефрагментируются физически.

:: ---------------------------------------------------------------------
call :sec "7/9  Defender: исключения + отключение плановых сканов"
%PS% "Add-MpPreference -ExclusionPath 'C:\' -ErrorAction SilentlyContinue; Write-Host '  [x] realtime-скан C:\ исключён (службы живы)'"
%PS% "Get-ScheduledTask -TaskPath '\Microsoft\Windows\Windows Defender\' -ErrorAction SilentlyContinue | Disable-ScheduledTask -ErrorAction SilentlyContinue"
:: TAMPER PROTECTION: исключения (ExclusionPath) tamper НЕ отменяет.
:: Полное выключение realtime — см. ВАРИАНТ В1 в конце, требует отключения
:: tamper в UI Defender и ручной проверки, что не откатилось.

:: ---------------------------------------------------------------------
call :sec "8/9  Хвосты: Xbox, карты, retail, phone, Udk (Device Enrollment)"
for %%s in (MapsBroker RetailDemo RemoteRegistry Fax WMPNetworkSvc PhoneSvc XblAuthManager XblGameSave XboxNetApiSvc XboxGipSvc UdkUserSvc) do (
    reg add "%SVC%\%%s" /v Start /t REG_DWORD /d 4 /f >nul
    sc stop %%s >nul 2>&1
)

:: ---------------------------------------------------------------------
call :sec "9/9  Убить уже запущенные апдейтеры + контрольная проверка"
%PS% "Get-Process | Where-Object { $_.Name -match 'GoogleUpdate|GoogleUpdater|MicrosoftEdgeUpdate|opera_autoupdate' } | Stop-Process -Force -ErrorAction SilentlyContinue; Write-Host '  [x] живые апдейтеры убиты'"
echo.
echo ==== Контроль: что стало со службами ====
%PS% "Get-Service | Where-Object { $_.Name -match 'wuauserv|UsoSvc|WaaSMedic|DoSvc|TrustedInstaller|AppXSvc|ClipSVC|InstallService|DiagTrack|SysMain|Superfetch|WSearch|edgeupdate|gupdate|GoogleUpdater' } | Format-Table Name,Status,StartType -AutoSize | Out-String -Width 100"
echo ==== Кто сидит в svchost-группах (для разборки оставшихся Service Host) ====
tasklist /svc /fi "imagename eq svchost.exe"
echo.
echo [OK] Готово. ПЕРЕЗАГРУЗИ, подожди 15-20 мин, проверь CPU/Disk в Task Manager,
echo      затем переснимай снапшот. Полная инструкция — в шапке скрипта.
exit /b 0

:sec
echo.
echo ================== %~1 ==================
exit /b 0