Блог "Дети ОИТа"
/поиск

Отключение обновлений Windows 10

## Назначение Скрипт `Disable-Windows10-Updates.ps1` максимально жёстко блокирует автоматическое скачивание и установку обновлений Windows 10. Запуск выполняется из PowerShell от имени администратора

Назначение

Скрипт Disable-Windows10-Updates.ps1 максимально жёстко блокирует автоматическое скачивание и установку обновлений Windows 10.

Запуск выполняется из PowerShell от имени администратора.

Что делает скрипт

Скрипт последовательно:

  1. Пытается создать точку восстановления системы.

  2. Создаёт политики Windows Update в реестре:

    • отключает автоматические обновления;
    • запрещает подключение к серверам Windows Update;
    • скрывает доступ к интерфейсу обновлений.
  3. Останавливает и отключает службы:

    • wuauserv — Windows Update;
    • BITS — фоновая передача файлов;
    • DoSvc — Delivery Optimization;
    • UsoSvc — Update Orchestrator;
    • WaaSMedicSvc — восстановление компонентов Windows Update.
  4. Отключает связанные задачи Планировщика заданий.

  5. Устанавливает для служб значение запуска Disabled через реестр.

  6. Переименовывает каталоги кэша обновлений:

    • C:\Windows\SoftwareDistribution;
    • C:\Windows\System32\catroot2.

Изменения полностью вступают в силу после перезагрузки.

Ограничения после применения

После выполнения скрипта могут перестать работать:

  • загрузка обновлений Windows;
  • автоматическая установка драйверов;
  • обновление компонентов Microsoft Store;
  • часть функций Microsoft Store;
  • автоматическое обновление Microsoft Defender;
  • установка дополнительных компонентов Windows;
  • восстановление компонентов Windows Update;
  • некоторые установщики, использующие службу BITS.

Скрипт не даёт абсолютной гарантии вечной блокировки. Крупное обновление системы, восстановление Windows или ручное изменение служб может вернуть Windows Update в рабочее состояние.

Как отменить изменения

Запустить PowerShell от имени администратора и выполнить:

$ErrorActionPreference = "SilentlyContinue"

$WUPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"

Remove-ItemProperty -Path "$WUPath\AU" -Name "NoAutoUpdate" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "$WUPath\AU" -Name "AUOptions" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "$WUPath\AU" -Name "ScheduledInstallDay" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "$WUPath\AU" -Name "ScheduledInstallTime" -ErrorAction SilentlyContinue

Remove-ItemProperty -Path $WUPath -Name "DisableWindowsUpdateAccess" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path $WUPath -Name "DoNotConnectToWindowsUpdateInternetLocations" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path $WUPath -Name "SetDisableUXWUAccess" -ErrorAction SilentlyContinue

sc.exe config wuauserv start= demand
sc.exe config bits start= delayed-auto
sc.exe config DoSvc start= delayed-auto
sc.exe config UsoSvc start= auto
sc.exe config WaaSMedicSvc start= demand

Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv" -Name Start -Value 3
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\BITS" -Name Start -Value 2
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\DoSvc" -Name Start -Value 2
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\UsoSvc" -Name Start -Value 2
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc" -Name Start -Value 3

Get-ScheduledTask |
    Where-Object {
        $_.TaskPath -like "\Microsoft\Windows\WindowsUpdate\*" -or
        $_.TaskPath -like "\Microsoft\Windows\UpdateOrchestrator\*" -or
        $_.TaskPath -like "\Microsoft\Windows\WaaSMedic\*" -or
        $_.TaskPath -like "\Microsoft\Windows\InstallService\*"
    } |
    Enable-ScheduledTask

if (Test-Path "C:\Windows\SoftwareDistribution.disabled") {
    Rename-Item "C:\Windows\SoftwareDistribution.disabled" "SoftwareDistribution"
}

if (Test-Path "C:\Windows\System32\catroot2.disabled") {
    Rename-Item "C:\Windows\System32\catroot2.disabled" "catroot2"
}

Start-Service bits
Start-Service wuauserv

После выполнения необходимо перезагрузить компьютер.

Если каталоги SoftwareDistribution или catroot2 уже были заново созданы системой, перед обратным переименованием их следует удалить или переименовать вручную.

Проверка состояния

Get-Service wuauserv,bits,DoSvc,UsoSvc,WaaSMedicSvc |
    Select-Object Name, Status, StartType

После блокировки службы должны быть остановлены и отключены. После отмены изменений службы должны иметь стандартный или ручной тип запуска.