dd_action('wp_footer', function() { ?>

5.3 Process Monitor (ProcMon) — как увидеть, какую DLL реально ищет игра

Process Monitor ProcMon NAME NOT FOUND поиск DLL старой игры

🧩 Что такое Process Monitor

Process Monitor (ProcMon) — это профессиональный инструмент Microsoft Sysinternals для наблюдения за действиями программ в реальном времени.

В отличие от Dependency Walker и Dependencies, которые показывают теоретические зависимости EXE, ProcMon показывает:

что Windows реально делает во время запуска игры.


Схема работы:

 
Запуск игры

↓

Windows ищет файлы

↓

ProcMon записывает действия

↓

Видим отсутствующую DLL

↓

Исправляем причину
 

🎯 Для чего нужен ProcMon

ProcMon особенно полезен, когда:

  • Dependencies ничего подозрительного не показывает;
  • игра закрывается без ошибки;
  • отсутствует неизвестная библиотека;
  • DLL загружается динамически;
  • игра ищет файлы не там, где нужно;
  • проблема появляется только при запуске.

🆚 ProcMon и Dependencies

 DependenciesProcMon
Анализ EXE✅❌
Импорт DLL✅❌
Реальный запуск❌✅
Поиск файлов❌✅
Динамические DLLограниченно✅
Ошибки путей❌✅
Проверка игры в работе❌✅

Правильное использование:

 
Dependencies

↓

понять API игры

↓

ProcMon

↓

увидеть реальную ошибку
 

📥 Установка Process Monitor

ProcMon входит в пакет:

 
Microsoft Sysinternals Suite
 

Файл:

 
Procmon.exe
 

Особенности:

  • portable;
  • установка не требуется;
  • работает на Windows 10/11.

▶ Первый запуск ProcMon

При запуске программа начинает записывать:

  • операции файлов;
  • обращения к реестру;
  • загрузку DLL;
  • действия процессов.

Сразу после запуска:

лучше остановить запись:

 
Ctrl + E
 

И очистить старые события:

 
Ctrl + X
 


🎮 Подготовка к запуску игры

Перед запуском нужно настроить фильтр.

Открыть:

 
Filter

↓

Filter...
 

Добавить:

 
Process Name

is

Game.exe

Include
 

Теперь ProcMon будет показывать только игру.


Пример:

 
RedAlert2.exe
 

или:

 
game.exe
 

▶ Запуск диагностики

Порядок:

 
1. Очистить журнал

↓

2. Включить запись

↓

3. Запустить игру

↓

4. Дождаться ошибки

↓

5. Остановить запись
 

Клавиши:

Запись:

 
Ctrl + E
 

Очистка:

 
Ctrl + X
 

🔴 Главная ошибка — NAME NOT FOUND

Самый важный результат.

Пример:

 
Game.exe

QueryOpen

xinput1_3.dll

NAME NOT FOUND
 

Это означает:

игра искала:

 
xinput1_3.dll
 

но Windows не нашла файл.


Решение:

установить:

  • DirectX Runtime;
  • XInput компонент.

📁 Как Windows ищет DLL

ProcMon показывает последовательность:

 
Game Folder

↓

System32

↓

SysWOW64

↓

Windows Directory
 

Пример:

 
C:\Games\OldGame\xinput1_3.dll

NAME NOT FOUND


C:\Windows\System32\xinput1_3.dll

NAME NOT FOUND
 

Вывод:

DLL отсутствует.


🔴 PATH NOT FOUND

Другой тип ошибки.

Пример:

 
C:\Game\Data

PATH NOT FOUND
 

Причины:

  • неправильный путь;
  • отсутствует папка;
  • повреждена установка.


🔍 Поиск DLL через ProcMon

Использовать фильтр:

 
Path

contains

.dll
 

Можно искать:

 
ddraw.dll
 

или:

 
mss32.dll
 


🖥 Пример 1 — отсутствует ddraw.dll

Старая игра:

 
Game.exe
 

ProcMon:

 
QueryOpen

ddraw.dll

NAME NOT FOUND
 

Вывод:

игра использует:

 
DirectDraw
 

Решение:

проверить:

  • DirectDraw компоненты;
  • DDrawCompat;
  • cnc-ddraw;
  • dgVoodoo2.

🔊 Пример 2 — отсутствует mss32.dll

ProcMon:

 
mss32.dll

NAME NOT FOUND
 

Вывод:

игра использует:

 
Miles Sound System
 

Решение:

найти оригинальную библиотеку игры.


Не помогает:

❌ установка DirectX.


🎮 Пример 3 — отсутствует xinput1_3.dll

ProcMon:

 
xinput1_3.dll

NAME NOT FOUND
 

Вывод:

игре нужен:

 
XInput
 

Решение:

установка:

 
DirectX End-User Runtime
 

🧩 Динамическая загрузка DLL

Очень важный случай.

Некоторые игры не имеют DLL в импорте.

Они делают:

 
LoadLibrary("xxx.dll")
 

Dependencies может не показать.

ProcMon покажет:

 
Load Image

xxx.dll

NAME NOT FOUND
 


🪟 Проверка wrapper DLL

ProcMon отлично показывает:

какая DLL реально используется.

Например:

В папке игры:

 
ddraw.dll
 

Запуск:

 
Load Image

C:\Game\ddraw.dll
 

Вывод:

используется локальная DLL.


Можно проверить:

  • DDrawCompat;
  • cnc-ddraw;
  • dgVoodoo.

🔍 Важные операции ProcMon

Основные события:

СобытиеЗначение
CreateFileоткрытие файла
QueryOpenпоиск файла
Load Imageзагрузка DLL
NAME NOT FOUNDфайл не найден
PATH NOT FOUNDпуть отсутствует
ACCESS DENIEDнет доступа

🔐 ACCESS DENIED

Пример:

 
game.dll

ACCESS DENIED
 

Причины:

  • права доступа;
  • антивирус;
  • Defender;
  • блокировка файла.

Решения:

  • запуск администратора;
  • проверка антивируса;
  • права NTFS.

🧪 Полный алгоритм диагностики через ProcMon

 
1. Открыть ProcMon

↓

2. Очистить журнал

↓

3. Создать фильтр Game.exe

↓

4. Запустить игру

↓

5. Дождаться ошибки

↓

6. Остановить запись

↓

7. Найти NAME NOT FOUND

↓

8. Определить DLL

↓

9. Установить правильный компонент
 

⚠ Типичные ошибки новичков

❌ Слишком большой журнал

Если не включить фильтр:

ProcMon покажет:

  • тысячи процессов;
  • системные операции;
  • лишние данные.

❌ Исправлять первую попавшуюся ошибку

Например:

 
font.dll NAME NOT FOUND
 

Это может быть не причиной падения.

Нужно искать:

  • последние ошибки перед закрытием;
  • DLL;
  • Load Image.

❌ Копировать случайную DLL

Нельзя:

 
скачал dll с сайта

↓

положил в System32
 

Правильно:

определить:

  • источник;
  • версию;
  • архитектуру.

📊 ProcMon — краткая диагностика

Что найденоЗначение
ddraw.dll NAME NOT FOUNDDirectDraw проблема
dsound.dll NAME NOT FOUNDзвук DirectSound
mss32.dll NAME NOT FOUNDMiles Sound
xinput1_3.dll NAME NOT FOUNDXInput
MSVCP*.dllVisual C++
d3dx*.dllDirectX Runtime
ACCESS DENIEDправа/защита
PATH NOT FOUNDотсутствует путь

Итог

Process Monitor — главный инструмент для ответа на вопрос: «Что игра реально ищет при запуске?»

Использовать:

✅ когда игра молча закрывается;
✅ когда неизвестно, какой DLL не хватает;
✅ когда библиотека загружается динамически;
✅ когда нужно проверить wrapper DLL.

Главная схема:

 
Игра

↓

Process Monitor

↓

NAME NOT FOUND

↓

Отсутствующая DLL

↓

Правильный компонент

↓

Запуск игры