Причины ошибки DISM Не удалось найти исходные файлы.

Причины ошибки DISM Не удалось найти исходные файлы.

09.12.2020 1 Автор GodKnowses

Приветствую всех, сегодня я продолжу начатую ранее статью про Ошибку DISM 0x800f081f. К своему позору я понял, что статью считать законченной просто нельзя. Так что идём дальше. Ошибка ” DISM Не удалось найти исходные файлы ” после запуска команды DISM /Online /Cleanup-Image /RestoreHealth, как оказалось, очень типична для компьютеров под управлением Windows 8 и Windows 10. Оно и понятно – в предыдущих версиях среда DISM только-только разворачивалась. На фоне повествования ошибка сопровождается также характерными кодами типа 0x800f081f, 0x800f0906 или 0x800f0907. В этой статье я постараюсь представить вам знакомые мне варианты решения проблемы. Не судите, однако, строго: лично у меня сложилось мнение, что Windows последней версии живёт собственной жизнью, которая учёту со стороны пользователя редко поддаётся полностью. Лично я несколько машин – с абсолютно схожими проблемами – так и не вернул к работоспособным настройкам.

Основные причины ошибки DISM Не удалось найти исходные файлы.

Чаще всего проблема вылезает на фоне получения или установки обновлений, активации .NET Framework 3.5 и т.п. Позволю себе причислить следующие, известные мне лично причины проблемы ” DISM Не удалось найти исходные файлы “:

  • DISM реально не может обнаружить онлайн (через обновления или WSUS) необходимые для ремонта образа файлы. Это – наиболее частая причина ошибки при исполнении команды DISM /Online /Cleanup-Image /RestoreHealth.
  • Хранилище компонентов Windows папка WinSXS забита донельзя. Возможны ошибки файловой системы. Чтение некоторых пакетов невозможно или ошибочно.
  • В качестве основы для ремонта мы указываем на неподходящий образ Windows (не на тот install.wim). Для предыдущей команды эта ошибка также типична.
  • Источник, откуда DISM указано подчерпнуть исходники, содержит несколько файлов install.wim. Сам факт множественного файла дело обычное, но при этом DISM останавливается с ошибкой, несмотря на тот факт, что пользователь указывает в команде конкретный файл.
  • Наконец, сам образ, скачанный из сети и откуда файл install.wim вынимается, кривой, скачан с ошибкой или тупо не подходит по архитектуре (32-х против 64-х), версии и выпуску. И, к сожалению, угадать точь-в-точь с образом практически невозможно.
  • Часто для работы с требуемыми для DISM файлами действительно не хватает прав.
  • DISM в конкретной Windows умерла как процедура. Дальнейшие действия – мёртвому припарка.

Вариантов исправления ” DISM Не удалось найти исходные файлы ” несколько. Начинаем с очистки хранилища компонентов.

Папка хранения компонентов системы (она же WinSXS, открывающаяся в проводнике по адресу C:\Windows\winsxs) содержит все необходимые файлы для обслуживания Windows. Это и установка обновлений, и исправление багов и много чего ещё. Здесь же хранятся и файлы, активно используемые системой для ремонта и установки апплетов. Со временем (с добавлением всё новых компонентов) папка разрастается, файлы внутри почти неизменно бьются. Вывод прост – за директорией нужен постоянный уход в виде обыкновенной очистки и проверки на целостность. Так что возьмите за основу процедуру наведения порядка всякий раз, когда собираетесь обратиться за помощью к DISM. Но для начала убедитесь, что вы всё про папку WinSXS знаете. И знаете, как её почистить правильно и, самое главное, уменьшить в размерах. Вполне вероятно, что она и является корнем всех ваших проблем. Вобщем, если не уверены – обязательно прочтите статью выше по ссылке. А так – забирайте команды очистки папки:

  • качаем, распаковываем и запускаем мой батник корректировки папки WinSXS. Учтите, работа батника отнимет какое-то время. После работы окно захлопнется.
  • очищаем кэш обновлений. Сначала остановим службу, очистим нужную папку и снова запустим сервис
net stop wuauserv
del /s /q %windir%\SoftwareDistribution\*.*
net start wuauserv
%SystemRoot%\System32\Cmd.exe /c Cleanmgr /sageset:65535 & Cleanmgr /sagerun:65535

Перезагружаемся и пытаемся запустить DISM в том виде, каком нужно вам:

DISM /Online /Cleanup-Image /RestoreHealth
  • Если прокатило, в консоли от имени администратора вводим команды в порядке, ниже указанном:
DISM /Online /Cleanup-Image /StartComponentCleanup
sfc /scannow
DISM /Online /Cleanup-Image /AnalyzeComponentStore
sfc /scannow

После последней (второй по счёту) команды sfc (если всё прошло гладко) перезагружаете компьютер. Не вышло?

А что в логах-то?

Начинать, по идее, стоит именно с этого – читайте логи. Смысл следовать непонятным и обнаруженным то тут то там инструкциям, постоянно натыкаясь на одну и ту же ошибку? Так что примите к сведению факт: ни одно событие (в том числе ошибка DISM) не заканчивается иначе как отсылкой в собственный лог CBS.log, создаваемый по адресу C:\Windows\Logs\CBS\. Нередко просто полезно посмотреть на регистрируемые события, где можно выцепить проблемную зону и предпринять действие. Часто оно сводится к удалению либо самого пакета данных, либо затиранию точки в неё входа. А это, как вы знаете, всегда начинается в реестре. Так что…

  • отправляемся по пути C:\Windows\Logs\CBS, открыв файл CBS.log текстовым редактором. Файл большой, и он структурирован, так что лучше воспользоваться как минимум Блокнотом WordPad. Я предлагаю вам команду на скорую руку из консоли
notepad.exe C:\Windows\Logs\CBS\CBS.log
  • запускаем поиск по документу сочетанием клавиш Ctrl + F и в поле поиска вводим Checking System Update Readiness., ориентируясь на время ошибки. Это своеобразная подпись проблемы, из-за которой DISM и система не могут работать:
checking system update readiness in windows log

щёлкните, чтобы увеличить

  • Если таковая обнаружена, спуститесь к строке, содержащей Corrupt или Missing. Рядом ней должно быть название повреждённого или отсутствующего пакета или другая причина проблемы со знакомым нам уже по консоли кодом ошибки. В моём случае им предположительно оказался KB4580419~31bf3856ad364e35~amd64~~10.0.4270.2. Скопируем это имя и держим окно Блокнота открытым. Вот, кстати, и результат попытки исправить проблему – ничего у системы не вышло. Пакет на месте, но на нём всё и стопорится:
Результат работы системы неудачный

запись “Failed” о невозможности завершить операцию красноречива

  • Запустим редактор реестра и создадим его полную резервную копию. Откроем ФайлЭкспорт. И укажем на какое-нибудь место поближе, например, Рабочий стол.

резервная копия ключа реестра на рабочем столе

  • Ищем вот этот ключ

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ComponentBasedServicing

  • Выделим его, и тут же, в контекстном меню правой мыши выберем Найти… В поле поиска вводим содержимое буфера обмена. Поиск по выбранному разделу вернул мне множество параметров, с ним связанных. Я собираюсь их удалить. И, как оказалось позже, просто замучаюсь это делать, зачистив до сотни параметров. Но перед этим сам раздел ComponentBasedServicing лучше сохранить в резервную копию. Щёлкаю по нему и выбираю Экспорт. Местом хранения выбираю тот же Рабочий стол. Ежели что – двойным щелчком мыши я удалённое восстановлю, выбрав Слияние.

поиск повреждённого каталога в реестре

Если в какой-то момент ключи или конкретные параметры засопротивляются, заимейте на них права из контекстного меню всего раздела ComponentBasedServicing через Разрешения… Выберем Дополнительно – сменим Владельца, выбрав Изменить, и в поле выбора учётной записи введите (или начните вводить) имя собственной учётной записи. Перед Применить замените наследования и разрешения в чек-боксах окна, выставив в оконцовке разрешения Администраторам:

не удаётся удалить все выделенные параметры

разрешения к разделу реестра

делегирование прав к ключу реестра учётной записи

разрешения для администраторов в реестре

Когда мы разобрались с правами и резервной копией, приступаем к удалению параметров. Клавишей DELETE или из того же контекстного меню.

  • Ещё не всё. Отправляемся в папку C:\Windows\Servicing\Packages и находим пакеты, содержащие в имени KB4580419~31bf3856ad364e35~amd64~~10.0.4270.2 в живом виде. Их может быть больше, чем число найденных ранее в реестре параметров, или не быть вообще. Каждый из них вырезаем и отправляем в любое место, лишь бы те в указанной папке больше не находились.
  • Перезагружаем Windows и повторно запускаем команду
DISM /Online /Cleanup-Image /RestoreHealth

и сразу за ней

sfc /scannow

Если всё прошло гладко, от резервных копий реестра и пакетных файлов с Рабочего стола можно избавиться. Если процесс притормозился, но уже чуть дальше, снова проверяйте логи. Поверьте, вы на правильном пути: проблем может накопиться море.

Ошибка в логах не исчезает? Переходите к восстановлению с флешки или диска в следующем абзаце.

Загрузочный носитель против ошибки DISM Не удалось найти исходные файлы.

По умолчанию DISM полезет в сеть за требуемыми файлами, но в большинстве случаев, к сожалению, и как мы с вами не раз убеждались, это срабатывает криво. И потому в качестве альтернативы среде лучше указывать на офлайн-источник (флаг команды /Source), до того из интернета скачанный. Вам понадобится пресловутый install.wim (install.esd) в чистом виде. Его можно найти на загрузочной флешке или диске, созданных при помощи двух-трёх популярных инструментов:

скачать нужную версию windows

подбор версии Windows с помощью Windows ISO Downloader

качаем образ windows

Все инструменты создания загрузочного образа равноценно результативны. Главное, чтобы содержимое носителя (на флешке, диске или в виде виртуального образа) отображалось в проводнике Windows. Среди файлов и папок носителя обнаружьте папку source и там файл install.wim (install.esd) вы и найдёте. Если это файл install.wim, команда в консоли cmd примет вид:

dism /Get-WimInfo /WimFile:X:\sources\install.wim

Если файл install.esd, то

dism /Get-WimInfo /WimFile:X:\sources\install.esd

где Х – буква носителя, на котором папка source находится. У меня виртуальному дисководу присвоена литера I:

запуск dism с источником с флешки

После этого ваша задача определиться с индексом требуемой версии. О своей Windows об этом расскажет команда

winver

из той же консоли команд cmd. Определились? Пробуем (следите за расширениями главного файла):

DISM /Online /Cleanup-Image /RestoreHealth /Source:WIM:X:\sources\install.wim:номер-индекса /LimitAccess

или же

DISM /Online /Cleanup-Image /RestoreHealth /Source:ESD:X:\sources\install.esd:номер-индекса /LimitAccess

рис

К СВЕДЕНИЮ

Немалое число пользователей здесь снова подстерегает ошибка. Дело в том, что Windows 10 (по отношению к предыдущим версиям) крайне чувствительна к делегированию прав по системе. То есть вы снова можете столкнуться с ошибкой 0x800f081f DISM Не удалось найти исходные файлы. В таком случае знайте: файл install.wim (install.esd) следует перетащить из флешки или виртуального диска в папку, к которой у вас ТОЧНО есть весь набор прав. Часто это Рабочий стол или Загрузки. Туда его и скопируйте. Но. Вы будете смеяться, но здесь также есть свои нюансы, хотя процесс вроде бы не самый трудный. 

А мы завершаем процесс извлечения той же командой проверки целостности системных файлов

sfc /scannow

Укажем запасной источник через реестр.

В этом случае в качестве альтернативного источника будет использоваться именно флешка. И снова, как указано выше, копируем файл install.wim в конкретную папку. Его версия, как вы помните, должна совпадать с вашей согласно данным, полученным от winver.

  • Запускаем редактор реестра regedit.exe и обнаруживаем раздел

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing

  • Щёлкнем правой мышкой по разделу Servicing. Уже внутри него создадим сначала Расширяемый строковый параметр, присвоив имя LocalSourcePath. А в поле значения укажем его в таком виде:

wim:путь-к-папке\install.wim:4

  1. где путь-к-папке\install.wim – путь к папке, где файл install.wim располагается
  2. 4 – номер индекса.

Теперь создаём параметр DWORD 32-x, присвоив имя UseWindowsUpdate. Его значение должно быть 2:

localsourcepath в реестре

usewindows update в реестре

Всё закрываем, компьютер перезапускаем и снова пытаемся зарядить проверку DISM командой из консоли

DISM /Online /Cleanup-Image /RestoreHealth

Не гарантирую, но пару раз прокатывало.

Ну, вот и всё, что вам я могу предложить. У вас остались восстановление точками и сброс до заводских настроек с сохранением личных файлов (но удалением всех программ). Моё личное мнение, если после вышеописанных процедур система не ожила, её восстанавливать другими методами и не стоит. Отписывайтесь, как у кого что прошло.

Успехов.