Ошибка при запуске приложения 0xc000007b: решения
Симптомы ошибки 0xc000007b
При попытке запуска исполняемого файла программы или игры появляется системное модальное окно: Ошибка при запуске приложения (0xc000007b). Для выхода из приложения нажмите кнопку ОК (внутренний код NTSTATUS STATUS_INVALID_IMAGE_FORMAT).
| Симптом | Контекст | Причина сбоя |
|---|---|---|
| Ошибка 0xc000007b сразу после клика на EXE | Запуск 64-битного приложения | Приложение пытается загрузить 32-битную (x86) системную DLL-библиотеку вместо 64-битной (x64) |
| Сбой после ручной замены DLL из интернета | Папка C:\Windows\System32 | В каталог System32 помещена 32-битная библиотека (mfc140.dll, msvcp140.dll, d3dx9_43.dll) |
| Отказ запуска служб баз данных / серверов | Запуск службы в services.msc | Несоответствие разрядности зависимых C++ рантаймов |
Пошаговое решение ошибки 0xc000007b (STATUS_INVALID_IMAGE_FORMAT)
- Удаление некорректно подложенных DLL из системных каталогов: если вы вручную скачивали отдельные DLL-файлы из интернета и копировали их в систему, удалите их из папок
C:\Windows\System32иC:\Windows\SysWOW64(в частности:xinput1_3.dll,d3dx9_*.dll,msvcp*.dll,vcruntime*.dll). - Полная переустановка всех пакетов Microsoft Visual C++ Redistributable: удалите через «Программы и компоненты» все старые версии и установите полный гибридный набор библиотек Visual C++ с 2005 по 2022 год (обязательно обе редакции: x86 и x64).
- Переустановка библиотек DirectX End-User Runtimes: загрузите официальный веб-установщик DirectX End-User Runtimes (June 2010) и выполните чистую установку компонентов Direct3D.
- Анализ зависимостей через утилиту Dependencies / Process Monitor: используйте Process Monitor для выявления конкретной DLL, возвращающей статус
INVALID IMAGE FORMATпри обращении:Procmon.exe /AcceptEula
Важное правило архитектуры Windows: В 64-битных ОС каталог C:\Windows\System32 содержит 64-битные системные файлы, а каталог C:\Windows\SysWOW64 — 32-битные библиотеки.
Частые вопросы (FAQ)
Почему возникает ошибка STATUS_INVALID_IMAGE_FORMAT (0xc000007b)?
Загрузчик Windows (LdrpInitializeProcess) обнаруживает, что бинарный формат загружаемой DLL (PE32 vs PE32+) не совпадает с разрядностью основного процесса приложения.
Нужно ли на 64-битной Windows устанавливать пакеты Visual C++ x86?
Да, обязательно. Если запускаемая программа является 32-битной, она использует исключительно библиотеки Visual C++ x86 из папки SysWOW64.
Поможет ли команда sfc /scannow при ошибке 0xc000007b?
Да, утилита SFC заменяет поврежденные и некорректно замененные системные DLL в папках System32 и SysWOW64 оригинальными версиями из хранилища WinSxS.
Как быстро найти проблемную DLL с помощью Process Monitor?
Установите фильтр Process Name = имя_программы.exe и результат Result = INVALID_IMAGE_FORMAT или NAME NOT FOUND.