Windows Administration
Windows Update software distribution

Папка SoftwareDistribution: что скрывает Windows Update и как это использовать системному администратору

ITfresh  ·  23 марта 2026  ·  ~9 мин чтения

Рано или поздно каждый системный администратор замечает, что диск C: стремительно худеет, а виновник прячется глубоко в системных недрах — C:\Windows\SoftwareDistribution. Папка может занимать от нескольких сотен мегабайт до 20 ГБ и более, при этом большинство пользователей понятия не имеют, что в ней хранится и безопасно ли от неё избавиться. Ответ неоднозначен: слепое удаление грозит нарушить цепочку обновлений, но грамотная очистка не только освобождает место, но и устраняет целый класс проблем с зависшим Windows Update. Разберём эту папку по слоям — так, как это должен понимать человек, отвечающий за инфраструктуру, а не рядовой пользователь.

Windows обновления SoftwareDistribution

Архитектура папки — что внутри

Папка SoftwareDistribution — это рабочее пространство службы Windows Update Agent (WUAgent). Она не является кешем в привычном смысле слова: часть данных здесь живёт постоянно и критически важна для корректной работы механизма обновлений. Прежде чем что-то удалять, нужно понять, из чего она состоит.

ПодпапкаНазначениеБезопасно удалить
Download Кешированные пакеты обновлений (.cab, .msu, .psf). Самый объёмный раздел. Да, при остановленных службах
DataStore База данных истории обновлений (DataStore.edb) и транзакционные логи. Да, но история сотрётся
PostRebootEventCache.V2 События, ожидающие регистрации после перезагрузки. Да, при остановленном агенте
SLS Данные лицензионного сервиса (Skype/Office через WU). Нет, трогать не нужно
ReportingEvents.log Журнал событий WU для диагностики. Да, при необходимости

DataStore.edb — сердце агента обновлений

База данных DataStore\DataStore.edb — это ESE (Extensible Storage Engine) база, в которой хранится полный каталог известных обновлений, статус их применения, зависимости между пакетами и метаданные о последних сессиях проверки. Именно здесь Windows Update «помнит», что уже установлено, а что ожидает очереди. Если база повреждена — агент либо зависает при проверке, либо повторно предлагает уже установленные обновления.

Рядом с ней располагаются транзакционные журналы (*.log с восьмизначными именами) — они обеспечивают атомарность операций. Пока WUAgent работает, эти файлы открыты эксклюзивно, и именно поэтому удалить их «на лету» невозможно без предварительной остановки служб.

Download — основной источник «жира»

Подпапка Download содержит загруженные, но ещё не применённые пакеты, а также временные файлы частичной загрузки с расширением .tmp. Механизм Background Intelligent Transfer Service (BITS) использует технологию возобновляемой закачки: если скачивание прервалось, оно продолжится с той же точки. Это удобно, но именно здесь накапливаются «призраки» — фрагменты пакетов для обновлений, которые так и не были применены из-за ошибки или отмены.

Почему папка разрастается

Нормальный размер SoftwareDistribution на актуальной системе — от 300 МБ до 2 ГБ. Когда цифра переваливает за 5–10 ГБ, это сигнал к расследованию. Вот типичные сценарии патологического роста:

Зависший агент обновлений

Если процесс svchost.exe, hosting службу wuauserv, подолгу держит CPU на 50–100%, это признак застрявшей сессии проверки. В таком состоянии WUAgent скачивает манифесты, перечитывает базу, но не завершает цикл. Файлы продолжают накапливаться, а старые не вычищаются — агент считает их «активными» загрузками.

Цикличные неудачные обновления

Обновление скачивается, при установке возникает ошибка (коды 0x80070643, 0x8007371b и подобные), откатывается — но файлы в Download остаются. При следующей проверке Windows снова скачивает тот же пакет. Со временем в папке оседают дубли одного и того же обновления в разных временных контекстах.

Корпоративные среды с медленной репликацией

На машинах, работающих через прокси или в удалённых филиалах с нестабильным каналом, BITS накапливает незавершённые задачи. Каждая из них резервирует место на диске. Список активных задач можно проверить командой bitsadmin /list /allusers /verbose — нередко там обнаруживаются задачи двух-трёхлетней давности.

Отложенные накопительные обновления

Современные накопительные пакеты для Windows 10/11 весят от 500 МБ до 4 ГБ. Если машина долго не перезагружалась, таких пакетов в очереди может скопиться несколько — каждый ждёт своей очереди на установку. В сумме это легко даёт 10–15 ГБ абсолютно легитимного, но временно ненужного содержимого.

💡

Совет диагноста: прежде чем чистить, выполните dir C:\Windows\SoftwareDistribution\Download /s /a и посмотрите на дату последнего изменения файлов. Если всё старше 30 дней — можно смело приступать к очистке.

Безопасно ли удалять содержимое

Короткий ответ — да, безопасно, если соблюдены два условия: службы остановлены, и вы не удаляете папку целиком вместе с её правами доступа (ACL). Windows при следующем запуске WUAgent самостоятельно воссоздаст всю структуру подпапок, заново скачает необходимые метаданные и пересчитает доступные обновления.

Что при этом происходит:

⚠️

Важно: никогда не удаляйте саму папку SoftwareDistribution — только её содержимое. Удаление корневой папки может нарушить права доступа, которые прописаны в системных политиках, и восстановить их вручную значительно сложнее, чем просто очистить содержимое.

Правильная очистка через службы

Процедура очистки состоит из четырёх этапов: остановка зависимых служб, удаление содержимого, перезапуск служб, принудительная синхронизация. Выполняйте команды в командной строке с правами администратора (Win+X → «Командная строка (администратор)»).

REM Шаг 1 — останавливаем агент обновлений и фоновую передачу
net stop wuauserv
net stop bits

REM Шаг 2 — удаляем содержимое папки Download (самый крупный раздел)
rd /s /q C:\Windows\SoftwareDistribution\Download

REM Дополнительно: очистка базы данных (сотрёт историю обновлений)
REM rd /s /q C:\Windows\SoftwareDistribution\DataStore

REM Шаг 3 — запускаем службы обратно
net start wuauserv
net start bits

REM Шаг 4 — принудительная проверка обновлений
wuauclt /detectnow

Команда wuauclt /detectnow заставляет агент немедленно выйти на связь с серверами и синхронизировать список доступных обновлений. После этого откройте «Центр обновлений Windows» и убедитесь, что проверка завершилась без ошибок.

На Windows 10 и 11 вместо wuauclt /detectnow предпочтительнее использовать UsoClient StartScan — это современный клиент оркестратора обновлений, который корректно работает в том числе с Delivery Optimization.

Полный сброс компонентов одной последовательностью

Если хотите сбросить все компоненты разом (включая Cryptographic Services и MSI Installer), используйте расширенную последовательность:

net stop wuauserv
net stop cryptsvc
net stop bits
net stop msiserver

ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old

net start wuauserv
net start cryptsvc
net start bits
net start msiserver

После перезагрузки Windows создаст чистые папки, а старые с суффиксом .old можно удалить вручную, убедившись, что обновления снова работают корректно.

Автоматизация через PowerShell

Для регулярного обслуживания парка машин ручные команды неудобны. Следующий скрипт останавливает службы, очищает папку, фиксирует результат в лог-файл и перезапускает агент. Запускайте его через GPO или Task Scheduler с правами SYSTEM.

#Requires -RunAsAdministrator
<#
.SYNOPSIS
    Очистка папки SoftwareDistribution\Download с логированием
.NOTES
    Версия: 1.2 | Автор: ITfresh
#>

$LogPath = "C:\Logs\WU-Cleanup-$(Get-Date -Format 'yyyy-MM-dd').log"
$SWDPath = "C:\Windows\SoftwareDistribution\Download"

function Write-Log {
    param([string]$Message, [string]$Level = "INFO")
    $ts = Get-Date -Format "HH:mm:ss"
    $line = "[$ts] [$Level] $Message"
    Write-Host $line
    Add-Content -Path $LogPath -Value $line -Encoding UTF8
}

if (-not (Test-Path "C:\Logs")) { New-Item -ItemType Directory -Path "C:\Logs" | Out-Null }

Write-Log "=== Начало очистки SoftwareDistribution ==="

$sizeBefore = (Get-ChildItem $SWDPath -Recurse -ErrorAction SilentlyContinue |
    Measure-Object -Property Length -Sum).Sum
Write-Log "Размер до очистки: $([math]::Round($sizeBefore/1GB, 2)) ГБ"

$services = @("wuauserv", "bits")
foreach ($svc in $services) {
    try {
        Stop-Service -Name $svc -Force -ErrorAction Stop
        Write-Log "Служба $svc остановлена"
    } catch {
        Write-Log "Ошибка остановки $svc`: $_" "WARN"
    }
}

Start-Sleep -Seconds 3

try {
    Get-ChildItem -Path $SWDPath -Recurse -Force -ErrorAction SilentlyContinue |
        Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
    Write-Log "Папка Download очищена"
} catch {
    Write-Log "Ошибка удаления: $_" "ERROR"
}

foreach ($svc in $services) {
    try {
        Start-Service -Name $svc -ErrorAction Stop
        Write-Log "Служба $svc запущена"
    } catch {
        Write-Log "Ошибка запуска $svc`: $_" "ERROR"
    }
}

Start-Process -FilePath "UsoClient.exe" -ArgumentList "StartScan" -NoNewWindow
Write-Log "Запущено сканирование обновлений (UsoClient StartScan)"
Write-Log "=== Очистка завершена ==="

Скрипт намеренно не удаляет DataStore — история обновлений сохраняется, что важно при аудите. Если нужна полная очистка, добавьте остановку cryptsvc и удаление соответствующей подпапки.

Диагностика зависших обновлений

Очистка папки решает проблему дискового пространства, но не всегда устраняет первопричину. Если обновления снова зависают через неделю — нужна диагностика.

CBS.log — главный журнал

Component-Based Servicing ведёт подробный журнал в C:\Windows\Logs\CBS\CBS.log. Ищите строки с [SR] (System File Checker), Failed и коды ошибок вида 0x8007xxxx. Этот журнал показывает, какой конкретно компонент отказывается устанавливаться и почему.

REM Анализ последних ошибок в CBS
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log

REM Проверка и восстановление системных файлов
sfc /scannow

REM Восстановление образа компонентов через DISM
DISM /Online /Cleanup-Image /RestoreHealth

Windows Update Troubleshooter через PowerShell

Встроенный troubleshooter доступен не только через GUI — его можно запустить в тихом режиме, что удобно при удалённом администрировании:

REM Запуск Windows Update Troubleshooter в тихом режиме
msdt.exe /id WindowsUpdateDiagnostic /quiet

REM Через PowerShell 5+
$pack = Get-TroubleshootingPack -Path "$env:SystemRoot\diagnostics\system\WindowsUpdate"
Invoke-TroubleshootingPack -Pack $pack -Unattended

Проверка активных задач BITS

Незавершённые задачи BITS — частая причина переполнения папки Download. Команда ниже выведет все активные и зависшие задачи с временными метками:

bitsadmin /list /allusers /verbose

Если обнаружены задачи возрастом более 2–3 недель, отменяйте их: bitsadmin /cancel "имя_задачи". Это немедленно освободит зарезервированное место.

🔎

Инструмент диагностики: утилита Windows Update MiniTool (сторонняя, portable) позволяет посмотреть очередь обновлений, их статус и размер в удобном GUI — полезно для первичного осмотра без погружения в логи.

В корпоративной среде: WSUS и SoftwareDistribution

Если машины управляются через Windows Server Update Services (WSUS), картина принципиально меняется. Клиентская папка SoftwareDistribution при этом работает иначе: вместо серверов Microsoft агент получает обновления с внутреннего WSUS-сервера, и размер кеша, как правило, существенно меньше.

Где хранится кеш на стороне WSUS

На сервере WSUS основное хранилище находится в папке, которую вы указали при установке — обычно C:\WSUS\WsusContent или на отдельном томе. Именно там располагаются одобренные пакеты обновлений. База данных WSUS (Windows Internal Database или SQL Server) хранит метаданные, статусы клиентов и историю синхронизаций.

# Проверка конфигурации WSUS
Get-WsusServer | Select-Object Name, PortNumber, UseSecureConnection

# Принудительная синхронизация WSUS с Microsoft
(Get-WsusServer).GetSubscription().StartSynchronization()

Групповые политики и управление кешем

В корпоративной среде путь к серверу обновлений задаётся через GPO: Computer Configuration → Administrative Templates → Windows Components → Windows Update → Specify intranet Microsoft update service location. Папку SoftwareDistribution переместить штатными средствами нельзя — она всегда располагается в %SystemRoot%.

Delivery Optimization в гибридных средах

Windows 10/11 использует Delivery Optimization (DO) для P2P-распределения пакетов между машинами в локальной сети. Кеш DO хранится отдельно: C:\Windows\SoftwareDistribution\DeliveryOptimization. Управлять его размером можно через политику или PowerShell-модуль:

# Просмотр статистики Delivery Optimization
Get-DeliveryOptimizationStatus
Get-DeliveryOptimizationPerfSnap

# Очистка кеша DO
Delete-DeliveryOptimizationCache -Force

В организациях с ограниченным интернет-каналом настройка DO с режимом LAN (Group ID или Subnet) позволяет машинам скачивать обновления друг у друга, существенно снижая нагрузку на WAN. «Тяжёлые» пакеты фактически скачиваются один раз на весь офис, а папка Download на каждой машине остаётся компактной.

Когда чистить, когда не трогать

Папка SoftwareDistribution — не мусорная корзина и не кеш браузера. Это рабочая область активного системного процесса, и вмешиваться в неё нужно взвешенно. Простое правило принятия решений:

Системный администратор, понимающий внутреннее устройство SoftwareDistribution, не просто «чистит папку» — он диагностирует состояние агента обновлений, предотвращает накопление проблем и обеспечивает предсказуемое поведение Windows Update на всём парке машин. Это разница между реактивным устранением симптомов и проактивным управлением инфраструктурой.

Нужна помощь специалистов?

ООО «АйТи Фреш» возьмёт это на себя

Не хватает времени или своих специалистов — мы настроим, оптимизируем и возьмём вашу IT-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах. Собственный дата-центр, команда из 8 серверов Dell Xeon Platinum 8280 на базе МТС.

15+лет опыта
25+клиентов
40Gсвоя сеть
24/7поддержка