Windows Administration
windows-softwaredistribution-folder

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

...
ЕС
Евгений Семёнов
Генеральный директор ООО АйТи Фреш · 15+ лет в IT

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

Любой сисадмин рано или поздно видит одну и ту же картину: диск 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 сам воссоздаст всю структуру подпапок, заново скачает нужные метаданные и пересчитает доступные обновления. Мы проделывали это сотни раз — ничего страшного не происходит.

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

⚠️

Важно: никогда не удаляйте саму папку 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 — это не мусор, который можно сносить при каждом удобном случае. Живой системный процесс работает с ней постоянно. Поэтому перед тем как что-то трогать, сверьтесь с простым правилом:

Честно говоря, разница между джуном и опытным сисадмином часто видна именно здесь. Первый «почистил папку и забыл». Второй, понимая, как устроена 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 на базе МТС.

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

Комментарии