Рано или поздно каждый системный администратор замечает, что диск C: стремительно худеет, а виновник прячется глубоко в системных недрах — C:\Windows\SoftwareDistribution. Папка может занимать от нескольких сотен мегабайт до 20 ГБ и более, при этом большинство пользователей понятия не имеют, что в ней хранится и безопасно ли от неё избавиться. Ответ неоднозначен: слепое удаление грозит нарушить цепочку обновлений, но грамотная очистка не только освобождает место, но и устраняет целый класс проблем с зависшим Windows Update. Разберём эту папку по слоям — так, как это должен понимать человек, отвечающий за инфраструктуру, а не рядовой пользователь.
Архитектура папки — что внутри
Папка 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 самостоятельно воссоздаст всю структуру подпапок, заново скачает необходимые метаданные и пересчитает доступные обновления.
Что при этом происходит:
- История установленных обновлений в центре обновлений Windows обнуляется (но сами обновления никуда не деваются, они записаны в реестре и логах CBS).
- Агент при следующем запуске выполнит полную синхронизацию с серверами Microsoft — это займёт от нескольких минут до получаса.
- Повреждённые или незавершённые загрузки будут автоматически перезапущены с нуля.
Важно: никогда не удаляйте саму папку 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 — не мусорная корзина и не кеш браузера. Это рабочая область активного системного процесса, и вмешиваться в неё нужно взвешенно. Простое правило принятия решений:
- Чистить стоит, когда: папка занимает более 3–5 ГБ без видимой причины; обновления не устанавливаются неделями; процесс svchost (wuauserv) постоянно нагружает CPU; в журналах коды ошибок 0x80070002, 0x80070003, 0x8024xxxx.
- Не трогать, когда: прямо сейчас выполняется установка обновлений; система готовится к перезагрузке для применения пакетов; WSUS только что одобрил новый пакет и агент его активно скачивает.
- После очистки обязательно: убедитесь, что wuauserv и bits запущены; дождитесь завершения первого цикла проверки обновлений; проверьте Event Viewer → Windows Logs → System на наличие ошибок WU.
Системный администратор, понимающий внутреннее устройство SoftwareDistribution, не просто «чистит папку» — он диагностирует состояние агента обновлений, предотвращает накопление проблем и обеспечивает предсказуемое поведение Windows Update на всём парке машин. Это разница между реактивным устранением симптомов и проактивным управлением инфраструктурой.
ООО «АйТи Фреш» возьмёт это на себя
Не хватает времени или своих специалистов — мы настроим, оптимизируем и возьмём вашу IT-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах. Собственный дата-центр, команда из 8 серверов Dell Xeon Platinum 8280 на базе МТС.