Как старый сисадмин: расшифровываем код любой ошибки любой Windows

Microsoft, как известно, никогда не ставила целью сделать коды ошибок Windows простыми и понятными рядовому пользователю системы. Поэтому выяснение, что именно означает конкретный код — это традиционно процесс не мгновенный (мягко говоря) и к тому же далеко не всегда заканчивающийся успехом.

Так что, если с «виндой» опять что-то не то, а утомительный поиск значение длинного кода (или даже нескольких) и с чтением расплывчатых описаний на форумах делу устранения проблемы никак не помогает, то можно и нужно воспользоваться одним давно не новым, но простым и до сих пор весьма эффективным программным инструментом.

Не пропустите: Старый Диспетчер задач в новой Windows 11: как включить

Речь — об официальной, но незаслуженно забытой утилите, которая выпущена была чуть ли не в прошлом веке, но даже сегодня способна значительно упростить жизнь не только обычному пользователю Windows, но и профессиональному системному инженеру или разработчику.

Впрочем, обо всем по порядку. Итак…

Архитектура системных ошибок: почему Windows говорит на 0x

Системные уведомления Windows по-прежнему пишет в шестнадцатеричном формате. Это тот самый префикс 0x, который предшествует основному коду.

Hex-система (основание 16) является базовым языком для компьютеров и низкоуровневых программистов, так как она максимально эффективно транслируется в бинарный код.

Для человека же такие конструкции обычно лишены смысла: невозможно эффективно устранить ошибку 0x000000709, если не понимать, какая именно операция была прервана.

Проблема осложняется еще и тем, что внутри Windows функционируют три независимые и параллельные системы кодов, наслоенные друг на друга в процессе эволюции ОС:

  • NTSTATUS — нижний уровень, используется непосредственно ядром Windows (Kernel);
  • Win32 API — промежуточный уровень трансляции, преобразует коды NTSTATUS в стандартный набор ошибок Win32;
  • HRESULT — верхний уровень, применяется в модели компонентных объектов Microsoft (COM).

Такая структура приводит к тому, что одно и то же числовое значение может иметь совершенно разные значения в зависимости от того, в какой именно подсистеме возник конфликт. Именно поэтому прямой поиск «расшифровки кода» в интернете часто выдает противоречивые результаты.

Инструмент старого сисадмина: как расшифровать код любой ошибки любой Windows

Утилита Microsoft Error Lookup Tool

Утилита Microsoft Error Lookup Tool (или просто ERR.exe) — это очень легкое и простое консольное приложение, предназначенное как раз для моментального перевода шестнадцатеричных и десятичных кодов в понятные текстовые описания.

ERR.exe умеет быстро обрабатывать колоссальный диапазон данных из Windows и сопутствующих программных продуктов, сопоставляя их с символьными именами и краткими текстовыми сообщениями. И позволяет мгновенно получать точные данные вместо «ручного» просмотра заголовочных файлов или неполных онлайн-списков.

Внутренняя логика Windows по распределению кодов, повторимся, хаотична: описания разбросаны по множеству заголовочных файлов. ERR.exe же компилирует ссылки на все эти источники в единую базу. На конкретный запрос  с кодом утилита сканирует свои данные и сразу же выдает абсолютно все совпадения.

Функция эта крайне важная и полезная прежде всего тем, что позволяет увидеть контекст ошибки для разных уровней системы. Например, подсистемы могут оборачивать специфические ошибки в общие сообщения типа STATUS_NO_MEMORY, а ERR.exe автоматизирует весь процесс, понимая макеты и диапазоны различных «семейств» кодов.

К слову, в свое время этот инструмент вышел из среды разработчиков Exchange Server, из-за чего на ранних этапах его считали специфическим продуктом для почтовых серверов. Однако это старое заблуждение. Эта утилита даже сегодня является универсальной и системной: она «понимает» Win32, HRESULT и NTSTATUS во всех актуальных версиях ОС Windows, включая самые современные её сборки.

Не пропустите: Падает FPS в играх после обновления Windows?

Как пользоваться утилитой ERR.exe и как интерпретировать данные

ERR.exe не требует сложной настройки или установки. Фактически нужен один только exe-шник и Терминал — и все, инструмент готов к работе. Файлик весит всего несколько мегабайт, не создает фоновых процессов и не требует прав администратора.

Алгоритм использования:

  • качаем файл (на текущий момент актуальная версия называется Err_6.4.5.exe) с  официального сайта Microsoft — вот прямая [ССЫЛКА] (загрузка сразу же!) — для удобства можно сразу переименовать его просто в err.exe
  • файл размещаем в системной папке или прописываем путь к нему в переменную Path, чтобы вызывать утилиту из любой директории через PowerShell или Windows Terminal;
  • запросы пишем, используя синтаксис (без 0x):
err [код_ошибки]

Например, если обновление Windows завершилось с ошибкой 0x80070005, то вводим команду

err 80070005

Утилита выдаст символьное имя ERROR_ACCESS_DENIED и краткое пояснение, из которого сразу же понятно, что проблема заключается в правах доступа, а не в самом механизме обновлений.

Теперь, зная конкретное символьное имя, можно гораздо точнее искать способы решения конкретной проблемы с доступом к модулям.

Инструмент старого сисадмина: как расшифровать код любой ошибки любой Windows

Вот как-то так…

Ну и в завершение отметим, что ERR.exe намеренно лишена графического интерфейса. Консольный формат для специалиста оптимален — быстрый, позволяет использовать скрипты и легко интегрируется в любые рабочие процессы по поиску неисправностей.

Обычному пользователю без яркого GUI инструмент может поначалу показаться неудобным, но именно такой просто текстовый вывод кодов обеспечивает максимальную информативность.

ERR.exe работает автономно, покрывает больше источников, чем любой профильный сайт, и выдает три важнейших параметра: числовое значение, символьное имя и заголовочный файл компонента. А этого набора данных достаточно, чтобы перестать гадать и начать устранять системные сбои Windows осмысленно и без задержек.

Что будем искать? Например,VPN

Мы в социальных сетях