Любой сисадмин рано или поздно видит одну и ту же картину: диск 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). При следующем запуске WUAgent сам воссоздаст всю структуру подпапок, заново скачает нужные метаданные и пересчитает доступные обновления. Мы проделывали это сотни раз — ничего страшного не происходит.
Что при этом происходит:
- История установленных обновлений в центре обновлений Windows обнуляется — но сами обновления никуда не пропадают, они зафиксированы в реестре и логах CBS.
- При следующем запуске агент выполнит полную синхронизацию с серверами Microsoft. Обычно это занимает от 5 до 30 минут — зависит от канала и нагрузки на серверы.
- Повреждённые или недокачанные файлы перезапустятся автоматически — с нуля, без вашего участия.
Важно: никогда не удаляйте саму папку 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
Нашли задачи возрастом больше двух-трёх недель? Смело отменяйте: bitsadmin /cancel "имя_задачи". Место освобождается немедленно.
Инструмент диагностики: сторонняя portable-утилита Windows Update MiniTool даёт удобный 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
Если канал узкий — настройте Delivery Optimization в режиме LAN (Group ID или Subnet). На практике это работает так: один раз скачал, остальные машины берут файл уже внутри офиса. WAN не перегружается, а папка Download на каждой рабочей станции остаётся разумного размера. Мы в нескольких проектах таким образом снизили трафик обновлений на 60–70% — без каких-либо дополнительных серверов.
Когда чистить, когда не трогать
Папка SoftwareDistribution — это не мусор, который можно сносить при каждом удобном случае. Живой системный процесс работает с ней постоянно. Поэтому перед тем как что-то трогать, сверьтесь с простым правилом:
- Чистить стоит, когда папка разрослась до 3–5 ГБ без видимой причины; обновления висят в статусе «ожидание» уже несколько недель; svchost (wuauserv) намертво кладёт CPU; в журналах мелькают ошибки 0x80070002, 0x80070003 или что-то из серии 0x8024xxxx.
- Не трогать, когда прямо сейчас идёт установка пакетов; система висит на экране «Подготовка к перезагрузке»; WSUS только что одобрил обновление и агент его активно тянет — дайте ему доделать работу.
- После очистки обязательно: проверьте, что wuauserv и bits действительно запущены — не просто «должны быть», а реально работают; дождитесь первого полного цикла проверки обновлений; откройте Event Viewer → Windows Logs → System и убедитесь, что WU не сыпет ошибками.
Честно говоря, разница между джуном и опытным сисадмином часто видна именно здесь. Первый «почистил папку и забыл». Второй, понимая, как устроена SoftwareDistribution изнутри, диагностирует состояние агента обновлений, отлавливает проблемы до того, как они вылезут на сотне машин, и держит Windows Update предсказуемым на всём парке. Реактивно тушить пожары или управлять инфраструктурой — выбор, который делается именно в такие моменты.
Официальная документация: Microsoft Learn — Windows Server, Microsoft Learn — PowerShell
Часто задаваемые вопросы
Что такое Папка SoftwareDistribution: что скрывает Windows Update и как это использовать системному администратору?
Папка SoftwareDistribution: что скрывает Windows Update и как это использовать системному администратору — это важный аспект системного администрирования, который позволяет настроить и оптимизировать работу IT-инфраструктуры. В данной статье подробно рассматриваются все ключевые моменты.
Как правильно настроить Папка SoftwareDistribution: что скрывает Windows Update и как это использовать системному администратору?
Для корректной настройки Папка SoftwareDistribution: что скрывает Windows Update и как это использовать системному администратору необходимо следовать пошаговой инструкции, представленной в статье выше. Важно учитывать особенности вашей инфраструктуры и требования безопасности.
Какие типичные ошибки возникают при работе с Папка SoftwareDistribution: что скрывает Windows Update и как это использовать системному администратору?
Наиболее частые ошибки при работе с Папка SoftwareDistribution: что скрывает Windows Update и как это использовать системному администратору: некорректная конфигурация, недостаточные права доступа и несовместимость версий. Рекомендуем обратиться к специалистам ITFresh для профессиональной настройки.
ООО «АйТи Фреш» возьмёт это на себя
Не хватает времени или своих специалистов — мы настроим, оптимизируем и возьмём вашу IT-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах. Собственный дата-центр, команда из 8 серверов Dell Xeon Platinum 8280 на базе МТС.

Комментарии