Центр обновления или DISM обрываются с 0x800F081F. В документации это CBS_E_SOURCE_MISSING: движок обслуживания не нашёл исходный файл пакета или компонента. Пакет мог скачаться, но собрать его не из чего. Это не 0x80070002 «файл не найден при загрузке» и не откат 0xC1900101. Часто всплывает при включении .NET Framework 3.5 и при ремонте хранилища компонентов после «чистилок».
Почему это происходит
В WinSxS нет нужной полезной нагрузки. Кто-то почистил компоненты вручную, стоит обрезанная сборка, старый DISM не достучался до Центра. RestoreHealth тогда сам падает с тем же 0x800F081F: чинить нечем.
.NET 3.5 без носителя. На Windows 10 и 11 каркас 3.5 ставится как компонент, не как отдельный «скачай exe». Без ISO или без доступа к файлам в sources\sxs получаете 0x800F081F. Отличие: в ошибке фигурирует NetFx3, не накопительный KB.
Несовпадение образа-донора. Подсунули ISO другой редакции или другой сборки. DISM с /Source честно не находит файлы. Код тот же, причина - не тот диск.
Путают со скачиванием. 0x80070002, 0x8024402C - пакет не приехал. 0x800F081F - исходник компонента не найден при установке или ремонте. Лечение кэша SoftwareDistribution здесь вторично.
Не удаляйте папку WinSxS «чтобы освободить место, а потом поставить обновление». Вы как раз создаёте CBS_E_SOURCE_MISSING. Не правьте реестр CBS наугад. Не скачивайте «пак компонентов» с форума. Официальный путь - DISM с совпадающим ISO или восстановление через Центр, если он ещё живой.
На Windows 10 компонент .NET 3.5 включают в «Программы и компоненты» → «Включение компонентов Windows». На Windows 11 путь короче: Параметры → Приложения → Дополнительные компоненты, либо тот же старый апплет. Код 0x800F081F в обоих случаях один. Если ISO другой языковой редакции, DISM тоже не найдёт файлы: нужен тот же язык и та же редакция, что уже стоят.
Не путайте с 0x800F0831 (хранилище CBS повреждено) и с 0x80073712 (компонентное хранилище в несогласованном состоянии). Соседи, не клоны. Лечение пересекается по DISM, номера разные.
Пишите код латиницей: 0x800F081F. Строчные 0x800f081f - тот же номер. Кириллическая «х» вместо x сделает поиск бесполезным.
Как исправить пошагово
- Посмотрите, где вылез 0x800F081F. Журнал Центра, окно включения .NET 3.5 или вывод DISM. Это три разных исходника, один код.
- Прогоните
sfc /scannow, затем DISM RestoreHealth при живом интернете. Иногда Центр сам отдаёт недостающие файлы. Если DISM сразу отвечает 0x800F081F - переходите к носителю. - Скачайте официальный ISO той же Windows и той же редакции. Смонтируйте образ в проводнике, запомните букву. Для .NET 3.5: включение компонента с указанием
E:\sources\sxsи/LimitAccess, где E - буква ISO. Букву берите свою. - Для накопительного KB, если RestoreHealth не находит файлы: DISM с
/Sourceнаinstall.wimилиinstall.esdтого же индекса редакции. Индекс смотрят черезdism /Get-WimInfo. Не тот индекс - снова 0x800F081F. - Поставьте проблемный KB из каталога Microsoft Update после ремонта хранилища. Автономный пакет не обходит полностью мёртвый CBS, но на слегка побитом часто проходит.
- Если ISO той же сборки не помогает и сборка обрезанная - установка поверх с того же ISO. Файлы и программы обычно остаются. Это честнее, чем собирать WinSxS по файлам с чужого ПК.
Не указывайте /Source на папку с другой версии Windows «на глаз». Несовпадение редакции Home и Pro даёт тот же CBS_E_SOURCE_MISSING и ощущение, что «DISM бесполезен».
Часто задаваемые вопросы
0x800F081F значит, что обновления больше не встанут? Нет. Значит, нет исходника для этой операции. После нормального ISO многие пакеты проходят.
Это вирус? Нет. Типичны чистилка, сборка и .NET 3.5 без носителя.
Чем отличается от 0x800F0906? Сосед по .NET 3.5: исходники тоже не скачались. Диагностика похожа, номера разные. Не склеивайте их в один выдуманный код.
Нужно ли удалять Центр обновления и ставить заново? Такой операции нет. Есть сброс кэша и ремонт CBS. Снос служб руками обычно заканчивается хуже.
