Ошибка Bad image DLL при запуске программ в Windows

При запуске системных или сторонних приложений в Windows пользователи могут столкнуться с ошибкой Bad Image с кодом 0xc000012f , 0xc0e90002 или 0xc0000020 , указывающей что некая библиотека (DLL файд) не предназначена для выполнения в Windows или повреждена. В статье рассмотрим, почему может возникнуть такая ошибка и как ее исправить.

В моем случае я столкнулся с ошибкой Bad Image после нештатного отключения компьютера во время установки обновлений Windows. После этого, при входе в Windows под пользователем стала появляться ошибка:

CrossDeviceResume.exe - Bad Image
C:\WINDOWS\SystemApps\MicrosoftWindows.Client.CBS_cw5Xn1h2txyewy\MSVCP140_APP.dll is either not designed to run on Windows or it contains an error. Try installing the program again using the original installation media or contact your system administrator or the software vendor for support. Error status 0xc000012f.

Аналогичные ошибки с библиотеками VCRUNTIME140_APP.dll и VCRUNTIME140_1_APP.dll.

Ошибка Bad Image при запуске программы в Windows

Ошибка Bad Image указывает, что системный файл (в данном случае это файл DLL библиотеки) или исполняемый файл программы поврежден или имеет неверную разрядность. Ваша задача: понять к какому приложению или системному компоненту относится указанный в ошибки файл и переустановить его (если это сторонняя программа) или восстановить оригинальную версию (если это системная библиотека или встроенный компонент Windows).

В моем примере из описания ошибки видно, что DLL файл относится к системному Microsoft Store приложению MicrosoftWindows.Client.CBS. Это системный компонент оболочки Windows 11, который обеспечивает отображение основных визуальных элементов интерфейса пользователя, включая кнопку Пуск, панель задач, и поисковую строку.

Для исправления ошибки нужно открыть консоль командной строки или PowerShell с правами администратора. Так как в моем случае меню Пуск и панель задач не отображались:

  1. Нужно нажать сочетание клавиш Ctrl+Shift + Esc , чтобы открыть диспетчер задач (Task Manager)
  2. Нажать кнопку
  3. В окне запуска указать powershell.exe и включить опцию запуска с правами администратора (Create this task with administrative privileges)

запуск консоли cmd или powershell с правами админа из Task Manager

Проверьте системный диск на наличие ошибок. Сбой файловой системы или диска может быть причиной повреждения системных DLL файлов.

chkdsk C: /f /r

Эта команда запланирует проверку диска при следующей загрузке компьютера. Перезагрузите компьютер и дождитесь окончания проверки.

Если проблема не решена, попробуйте “мягко” перерегистрировать указанное Microsoft Store приложение для всех пользователей:

Get-AppxPackage -AllUsers MicrosoftWindows.Client.CBS | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

Перерегистрация Microsoft Store приложения Add-AppxPackage -DisableDevelopmentMode -Register AppXManifest.xml

Перезагрузите компьютер и проверьте, исправлена ли ошибка. Если нет, нужно выполнить переустановку этого компонента. Т.к. компонент MicrosoftWindows.Client.CBS в Windows 11 глубоко интегрирован в систему, отключить и включить его как другие компоненты нельзя.

Ниже оставлю команды для включения/отключения опциональных компонентов в Windows:

Для классических компонентов Windows:

Disable-WindowsOptionalFeature -Online -FeatureName "Имя_Компонента"

Enable-WindowsOptionalFeature -Online -FeatureName "Имя_Компонента"

Для компонентов по требования (FoD):

Remove-WindowsCapability -Online -Name "Имя_Компонента~~~~0.0.1.0"

Add-WindowsCapability -Online -Name "Имя_Компонента~~~~0.0.1.0"

В моем случае т.к. это глубоко интегрированный системный компонент, единственный способ восстановить его – проверить и исправить системные файлы Windows с помощью команд DISM и SFC. Последовательно выполните команды:

DISM /Online /Cleanup-Image /RestoreHealth

SFC /scannow

Дождитесь завершения команд (займет длительное время), перезагрузите компьютер.

Другие варианты исправления проблемы с повреждённой DLL и ошибкой bad image:

  • Если проблема появляется при запуске одной определенной программы и ссылается на DLL библиотеку в каталоге установки программы (например, C:\Program Files\AppName\bin\app.dll ), проще всего просто перестановить. программу. Перейдите в панеуль управления программами, выполнив команду ms-settings:appsfeatures или appwiz.cpl , найдите программу в списке и удалите ее (если программ не удаляется штатно, удалите ее принудительно). Скачайте с сайта разработчика последнюю версию программы и установите ее. Ошибка bad image при запуске программы из Program Files
  • Если ошибку вызывает DLL в папке %WinDir%\System32\DriverStore\FileRepository , значит поврежден или отсутствует библиотека какого-то драйвера. Чтобы понять, к какому именно устройству относится драйвер, выведите список установленных драйверов в DriverStore с помощью указанной ниже команды PowerShell. Найдите драйвер (по пути к INF файлу в поле OriginalFileName), путь к которому содержится в описании ошибки. Скачайте актуальную версию указанного драйвера и вручную установите его.

Get-WindowsDriver -Online -All | Select-Object ClassName, ProviderName, OriginalFileName | Format-Table -AutoSize

Ошибка bad image вызвана повреждением библиотеки драйвера в DriverStore

  • Если DLL в ошибке указывает на файлы библиотек вида msvcp[version].dll , vcruntime[version].dll , mfc[version].dll или msvcp[version].dll , то проблема в установленном на компьютере наборе системных библиотек Microsoft Visual C++ Redistributable. Решение также сводится к удалению (через апплет appwiz.cpl ) и переустановке версии Microsoft Visual C++ Redistributable на компьютере. Обратите внимание, что чаще всего нужно ставить пакеты для обоих разрядностей (x86) и (x64). Список актуальных версий Visual C++ Redistributable и ссылки на загрузку тут.

Bad image - mfc140.dll

Переустановка Visual C++ Redistributable


Предыдущая статья Следующая статья


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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)