Ошибка 'Не является приложением Win32' (Win32 App): почему возникает
Архитектура PE (Portable Executable) и парсинг бинарников
Ошибка «...не является приложением Win32» (is not a valid Win32 application) выдается загрузчиком образов Windows (Image Loader). Когда вы дважды кликаете по .exe файлу, ядро (ntoskrnl.exe) читает первые байты файла (Магическое число MZ - Марк Збиковски, и заголовок PE). Если структура заголовка (PE Header) повреждена, отсутствует, или описывает архитектуру, которую не поддерживает текущая ОС (например, попытка запустить 64-битный код на 32-битной Windows, или 16-битный код на 64-битной без NTVDM), загрузчик отказывается выделять память под процесс и выбрасывает это исключение. Бизнес-риски: невозможность запуска критических обновлений, инсталляторов (0 байт), подозрение на массовое заражение сети файловыми вирусами.
Матрица несовместимости архитектур
| Архитектура EXE файла | Разрядность Windows (ОС) | Результат запуска (Успех/Ошибка) |
|---|---|---|
| 16-бит (MS-DOS / Win 3.1) | 32-бит (x86) | Успех (через подсистему NTVDM). |
| 16-бит (MS-DOS / Win 3.1) | 64-бит (x64) | Ошибка (NTVDM вырезан из x64). Требуется эмулятор (DOSBox). |
| 64-бит (x64) | 32-бит (x86) | Ошибка 'Не является приложением Win32'. |
Диагностика и восстановление PE-файлов
Сценарий 1: Проверка целостности файла (Недокачка)
Самая банальная причина — файл скачался не полностью (обрезан заголовок или EOF). В результате загрузчик видит битый PE-хидер.
- Сравните размер скачанного файла с заявленным на сайте (или контрольную сумму MD5/SHA256 через
Get-FileHash). - Если файл имеет размер 0 байт — это проблема работы службы BITS или антивирус, который заблокировал файл в момент записи на диск. Отключите антивирус и скачайте заново.
- Разблокируйте файл в свойствах: ПКМ по файлу -> Свойства -> вкладка Общие -> галочка "Разблокировать" (снимает поток Zone.Identifier).
Сценарий 2: Вирусное заражение (File Infectors)
Вирусы типа Sality, Virut или Neshta дописывают свой код в PE-заголовок (меняют Entry Point) исполняемых файлов на всем диске. Если антивирус попытался "вылечить" файл, но сделал это криво — заголовок ломается безвозвратно.
- Загрузитесь с Live-USB (Kaspersky Rescue Disk или Dr.Web LiveDisk) и просканируйте систему.
- Если файлы
.exeповреждены необратимо, потребуется восстановление из резервных копий.
Типовые ошибки администраторов
- Попытка "запустить от имени администратора" битый файл: Права доступа не исправят поврежденную структуру бинарника. Загрузчику безразличны ваши права, если он не может распарсить таблицу импорта (Import Table).
Это классический симптом стремительного распространения полиморфного вируса-инфектора (Sality) по сетевым шарам (SMB). Немедленно изолируйте зараженные сегменты. Команда Incident Response от ITSTM купирует угрозу и восстановит инфраструктуру с минимальными потерями данных.
Частые вопросы (FAQ)
Как точно узнать архитектуру скачанного EXE файла?
Используйте утилиту CFF Explorer или 7-Zip. Откройте EXE файл в 7-Zip как архив, посмотрите характеристики. Либо утилитой Sigcheck (Sysinternals): sigcheck.exe -a file.exe (поле MachineType).
Можно ли запустить старую 16-битную программу (например, Клиент-Банк 90-х) на Windows 10 x64?
Напрямую — нет, Microsoft физически удалила 16-битную подсистему NTVDM из 64-битных ядер. Вам придется использовать виртуальную машину с 32-битной Windows (Hyper-V/VirtualBox) или эмуляторы типа DOSBox/OTVDM.
Почему ошибка появляется при автозапуске CD/DVD диска?
На старых дисках файл autorun.inf ссылается на 16-битный или устаревший 32-битный инсталлятор, который конфликтует с современными механизмами DEP (Data Execution Prevention) в Windows 10/11.
Что значит, если файл 0 байт, но на флешке место занято?
Сбой файловой системы (FAT32/NTFS) на флешке, либо таблица MFT повреждена. Требуется выполнить команду chkdsk /f /r на проблемном накопителе.