DISM Ошибка 2 в Windows 11 и 10 — причины и решения

Способы исправить ошибку 2 Не удается найти указанный файл в DISMПри выполнении команд DISM от простых и часто используемых, таких как RestoreHealth и ScanHealth, до более сложных — например, интеграция драйвера в образ или восстановление с использованием данных из WIM/ESD образа, некоторые пользователи могут получить сообщение об ошибке с кодом 2 «Не удается найти указанный файл».

В этой инструкции подробно о том, почему такое может происходить и способы исправить ошибку, если вы с ней столкнулись.

Возможные причины ошибки

Пример ошибки с кодом 2 при восстановлении хранилища компонентов в DISM

Ошибка 2 (0x80070002) в DISM соответствует системному коду ERROR_FILE_NOT_FOUND (файл не найден). Однако, в контексте использования DISM, речь не всегда идёт именно о физическом файле на диске: при операциях обслуживания образа DISM обращается также к разделам реестра и в случае, если не находит нужный, ошибка также транслируется в рассматриваемый код.

В отличие от ошибки 87 (может возникать при повреждении библиотек самого инструмента DISM или служб, необходимых для его работы) или 0x800f0915 (при повреждении пакетов в хранилище или недоступности источника для восстановления), ошибка 2 (0x80070002) указывает на фактическое отсутствие запрашиваемого в процессы выполнения команды объекта.

Наиболее распространённые конкретные причины ошибки:

  • Ошибки при указании путей к файлам: образу при монтировании, источнику восстановления, каталогу ScratchDir, образу оффлайн-системы, файлу интегрируемого драйвера вследствие случайных ошибок при вводе команд, при работе в среде восстановления или с WinPE (в этом случае буква системного раздела диска может отличаться от C). Пример ошибки с кодом 2 при добавлении драйвера в DISM
  • Повреждение данных в реестре, например в базе данных компонентов
    C:\Windows\System32\config\COMPONENTS
    вследствие ошибок диска, потери питания при установке обновлений, в результате работе программ «для очистки реестра».
  • Редко: блокировка доступа к необходимым файлам сторонним антивирусом или другим ПО, нарушение прав доступа к системным папкам и файлам.

Для более точного понимания ситуации желательно изучить файлы журнала (обычные текстовые файлы, которые можно открыть в любом редакторе, включая Блокнот):

C:\Windows\Logs\DISM\dism.log
C:\Windows\Logs\CBS\CBS.log

Ближе к концу файла вы увидите несколько строк с указанием кода ошибки 0x80070002 с пояснениями, которые могут подсказать причины, например:

  • «WIM open failed.» — CWimImageInfoCollection::Initialize(hr:0x80070002) — ошибка открытия указанного WIM-образа (неправильно указан путь, файл отсутствует). Ошибка 0x80070002 при монтировании WIM в DISM
  • Прямой указание «Не удается найти указанный файл» (Cannot find the file specified) — говорит о неправильном указании пути, несуществующем или заблокированном для чтения файле, например, при указании пути к файлам драйверов вручную.
  • Строки Error in operation: (null) (CBS HRESULT=0x80070002) или CbsSessionOptionDetectStoreCorruption (hr:0x80070002) могут указывать на повреждение базы компонентов и реестра. Ошибка 0x80070002 в Dism.log при повреждении реестра

Если вам сложно разобрать содержимое файлов журнала, вы можете скопировать строки, добавленные в нём во время сессии с ошибкой и «скормить» их современной LLM (нейросети, языковой модели), обычно они сравнительно легко устанавливают причину сбоя. Исключение — последний вариант.

Способы исправить ошибку

Теперь по порядку о возможных способах исправить ошибку 2 при выполнении команд DISM от простых к сложным:

  1. Внимательно проверьте правильность ввода путей и параметров, наличие пробелов и/или кавычек там, где это необходимо. Располагайте файлы WIM/ESD в папках, путь к которым не содержит пробелов. Если вы копируете код откуда-либо и не уверены в том, что используемая вами инструкция с командами верна, поищите альтернативный источник, учитывайте отличия в путях на вашем компьютере.
  2. Выполните проверку диска на ошибки (может приводить к повреждениям реестра/файлов): запустите командную строку от имени администратора и введите команду
    chkdsk C: /f /r
  3. Попробуйте выполнить сброс зависших операций обслуживания с помощью команд
    dism /online /cleanup-image /RevertPendingActions
    dism /online /cleanup-image /StartComponentCleanup
    после чего вручную удалите содержимое папок (второй путь вставьте в адресную строку Проводника и нажмите Enter)
    C:\Windows\Temp
    %TEMP%
  4. При наличии точек восстановления системы или включенной функции отката до точки во времени используйте их.
  5. Для рассматриваемого кода ошибки скорее не сработает, но можно попробовать выполнить команду
    sfc /scannow
    При повреждении файлов/библиотек самого DISM и при условии, что соответствующие пакеты не повреждены в хранилище компонентов, они будут восстановлены.

К сожалению, в ситуации, когда ошибка с кодом 2 возникает при обычных командах, таких как:

dism /online /cleanup-image /restorehealth

это часто говорит именно о повреждении в реестре и внутренней базе хранилища компонентов Windows, а исправление ситуации при отсутствии резервных копий и точек восстановления затруднено.

Вариантов в такой ситуации не много:

  • Отслеживать, на чем именно «падает» DISM (обычно следует изучать процесс TiWorker.exe, вызываемый в ходе таких сессий) с кодом FILE NOT FOUND или NAME NOT FOUND в Process Monitor или похожем инструменте, пробовать разобраться и восстановить соответствующие элементы вручную, например, с рабочей ОС той же версии.
  • Прибегнуть к «Обновлению на месте» или другим способам переустановки системы без потери данных.

Обычно более результативным и быстрым оказывается второй вариант.

Надеюсь, информация пригодилась и помогла разобраться. Если остаются вопросы, вы можете задать их в комментариях ниже, желательно с полной информацией в том числе и о точном синтаксисе вводимых команд и среды (рабочая ОС, WinPE, среда восстановления) где они вводятся.

Оставить комментарий