При запуске системных или сторонних приложений в 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 указывает, что системный файл (в данном случае это файл DLL библиотеки) или исполняемый файл программы поврежден или имеет неверную разрядность. Ваша задача: понять к какому приложению или системному компоненту относится указанный в ошибки файл и переустановить его (если это сторонняя программа) или восстановить оригинальную версию (если это системная библиотека или встроенный компонент Windows).
В моем примере из описания ошибки видно, что DLL файл относится к системному Microsoft Store приложению MicrosoftWindows.Client.CBS. Это системный компонент оболочки Windows 11, который обеспечивает отображение основных визуальных элементов интерфейса пользователя, включая кнопку Пуск, панель задач, и поисковую строку.
Для исправления ошибки нужно открыть консоль командной строки или PowerShell с правами администратора. Так как в моем случае меню Пуск и панель задач не отображались:
- Нужно нажать сочетание клавиш
Ctrl+Shift + Esc, чтобы открыть диспетчер задач (Task Manager) - Нажать кнопку
- В окне запуска указать
powershell.exeи включить опцию запуска с правами администратора (Create this task with administrative privileges)

Проверьте системный диск на наличие ошибок. Сбой файловой системы или диска может быть причиной повреждения системных DLL файлов.
chkdsk C: /f /r
Эта команда запланирует проверку диска при следующей загрузке компьютера. Перезагрузите компьютер и дождитесь окончания проверки.
Если проблема не решена, попробуйте “мягко” перерегистрировать указанное Microsoft Store приложение для всех пользователей:
Get-AppxPackage -AllUsers MicrosoftWindows.Client.CBS | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\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, найдите программу в списке и удалите ее (если программ не удаляется штатно, удалите ее принудительно). Скачайте с сайта разработчика последнюю версию программы и установите ее.
- Если ошибку вызывает DLL в папке
%WinDir%\System32\DriverStore\FileRepository, значит поврежден или отсутствует библиотека какого-то драйвера. Чтобы понять, к какому именно устройству относится драйвер, выведите список установленных драйверов в DriverStore с помощью указанной ниже команды PowerShell. Найдите драйвер (по пути к INF файлу в поле OriginalFileName), путь к которому содержится в описании ошибки. Скачайте актуальную версию указанного драйвера и вручную установите его.
Get-WindowsDriver -Online -All | Select-Object ClassName, ProviderName, OriginalFileName | Format-Table -AutoSize

- Если 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 и ссылки на загрузку тут.



