In English

alt

Информативно, не правда ли? Видим имя файла, код ошибки, а чего делать и кого искать - неясно. Из текста можно догадаться, что приложению по каким-то причинам не удалось правильно загрузиться. Порывшись на форумах с англо-русским словариком, самое большее, что можно понять, это то, что не смогла загрузиться какая-то библиотека (т.е. dll), которая нужна больному файлу. Да вот только какая? Осталось всего лишь составить список всех библиотек, используемых процессом и проверить наличие каждой на диске. И пускай есть несколько хороших почти-бесплатных программ для просмотра таблицы импорта любого исполняемого файла в окружении непонятных цифр и абревиатур типа RVA, вот только большинство пользователей, столкнувшихся с такой проблемой, уже давно испугались читать дальше и побежали переустанавливать Windows. Для тех, кто остался, рассказываю дальше.

Конечно же я не призываю искать программы, показывающие необходимые Dll, чтобы потом выписать их в блокнотик и затем по одной отыскать где-то в системных папках на жестком диске, убедившись в их целости и сохранности. Даже несмотря на то, что в таблице импорта explorer.exe на моем компьютере их всего лишь 19, это занятие может растянуться надолго (ручной поиск причины ошибки в первый раз у меня занял около четырех часов). А уж если догадаться, что программа в процессе работы может загрузить любую библиотеку динамически, то под подозрение может попасть почти все содержимое компьютера.

Для наблюдения за загрузкой процесса пришлось создать Наблюдателя, который сможет запустить выбранную программу (через меню "Файл") и зафиксировать все более-менее значимые события в процессе ее работы: создание и удаление потоков, загрузку и выгрузку библиотек, возникновение исключений (exceptions). Все, что увидит, подробно запишет в текстовый файл и покажет на экране дерево загрузки и таблицу с подробной информацией о каждой библиотеке.

alt

Текстовый лог-файл будет создан в папке с программой и сразу после окончания сканирования откроется в Блокноте. Его можно проанализировать самостоятельно на предмет наличия ошибок загрузки или прислать мне на почту Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript , подскажу, что сделать дальше.

PS Если окно с ошибкой выскакивает в ходе загрузки Windows и, соответственно, запустить данную утилиту не представляется возможным, можно попробовать загрузиться с LiveCD и прописать ее запуск в реестре в ключе winlogon/shell. После перезагрузки она должна запуститься вместо explorer.exe. Разумеется, затем обязательно вернуть explorer.exe на место. Для тех, кто не понял, о чем я, самостоятельно лучше ничего не трогать.

Это важно!

  • Запуск программы выполнять от имени Администратора! В случае запуска не от Администратора, будет показано окно с предупреждением о том, что возможна некорректная работа программы.
  • В версиях программы, начиная с 10.12.2012, убрана необходимость наличия на компьютере Visual Studio C++ Redistributable Package, из-за чего она стала немного "тяжелее".
  • Программа не вносит никаких изменений на жесткий диск или в реестр компьютера и, естественно, не содержит вредоносный код. Ее использование или неиспользование целиком и полностью лежит в руках пользователя.
  • Более продвинутая и профессиональная утилита, способная диагностировать проблему появления ошибки 0xc0000142, называется Dependency Walker, однако для ее использования необходимо обладать некоторыми знаниями в области системного программирования и уметь пользоваться англо-русским словариком.
  • Если "Запустил файл, открылся лог, а я там ничего не понимаю!", - следует прислать мне текстовый файл с логом на электронную почту Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript . Будем разбираться вместе. К логу очень желательно добавить лог от программы Dependency Walker в режиме профилирования (кнопка F7), это намного ускорит процесс. НО! Причину, по которой вдруг не смогла запуститься 'крякнутая' игрушка, мне разбирать не интересно. Спрашивайте у авторов патчей. И прежде чем кидать лог, надо дочитать эту страницу до конца. Возможно, решение вашей проблемы здесь уже описано. Поэтому если я не отвечаю на сообщение, следует призадуматься

Прямая ссылка для скачивания:

exe-файл x32 (версия от 19.04.2013)

exe-файл x64 для 64-битных операционных систем (версия от 19.04.2013)

Известные проблемы:

  • The Sims 3. Программа выдает ошибку 0xC0000142 в результате "кривой" установки DirectX в папку The Sims 3\Game\Bin. Анализ лога показал проблему в библиотеке d3dx9_31.dll, размер которой был всего лишь 73К. Ошибка устранена после переустановки DirectX с официального сайта.
  • LogonUI.exe. Программа выдает ошибку 0xC0000142; в итоге не загружается Windows. Анализ конкретного случая показал, что в результате работы некой программы по "украшательству" Windows был изменен сам файл LogonUI.exe, что привело к ошибке. Ошибка устранена после замены файла на оригинальный с загрузочного диска (LiveCD).
  • При установленном на компьютере антивирусе Касперского 2011 в загрузку процесса вклинивается библиотека mzvkbd3.dll, и в результате процесс завершается с ошибкой 0xC0000142. Если в логе видна загрузка этой библиотеки, то для устранения ошибки первым делом стоит попробовать деинсталлировать антивирус либо обновить его до версии 2012. Подтверждено устранение ошибки 0xC0000142 в программах The Witcher 2 (Ведьмак) и StairCon.
  • В операционной системе Windows XP при попытке запуска консольных приложений типа cmd.exe или ping.exe может возникать ошибка 0xC0000142. Для устранения этой ошибки корпорация Microsoft выпустила обновление KB950312. Проблема решается заменой файла Winsrv.dll
  • Ошибка 0xC0000142 может появляться, когда используются пропатченные библиотеки, нарушающие лицензию оригинальной программы. Например, поломанная игра FAR CRY 3 не запускается под Windows XP, поскольку разработчики кряка не задумались о том, что эта операционная система официально не поддерживает DirectX 11. Также любая игра, использующая steam_api.dll, может упасть из-за подменённого файла без копирайта от Valve Corporation. Неоригинальная библиотека steam_api.dll не совместима с Windows XP! Ну, или если в логе видна загрузка какого-нибудь патча от SKIDROW, то причину появления ошибки лучше спросить у них.
  • Свою библиотеку pctESPHooking32.dll суёт во все места PCTools Firewall. Проблема обнаружилась при запуске программы ImgBurn и после деинсталляции этого файрвола успешно разрешилась.
  • Ошибку 0xC0000142 вызывает библиотека BrowserProtect.dll, которая вместе со своим процессом BrowserProtect.exe загружается автоматически при старте операционной системы и занимается непонятными вещами, блокируя изменение настроек браузеров и стартовой страницы. Библиотека загружается через AppInit_DLLs, следовательно, получает управление при запуске абсолютно любой программы на компьютере. Да ещё и сам процесс сильно позаботился о своей безопасности, прописавшись аж в Task Scheduler! Живёт тоже по странному адресу вида C:\ProgramData\BrowserProtect\2.6.1125.80\{c16c1ccb-7046-4e5c-a2f3-533ad2fec8e8}
  • Недавнее изобретение от NVIDIA, а именно NVIDIA GeForce Experience, добавляет загрузку библиотеки rxinput.dll в память всех процессов при их запуске, из-за чего в некоторых случаях (ошибки проявляются в системе Windows 7) с ошибкой 0xC0000142 падают совсем безобидные программы типа skype.exe или даже iexplore.exe. Отключение сервиса NVIDIA Streamer Service, которому, вероятно, принадлежит эта библиотека, а также принудительное её удаление из ключа реестра AppInit_DLLs, к сожалению, не помогло устранить ошибку. Поэтому единственным известным мне способом восстановить нормальную работоспособность системы является деинсталляция NVIDIA GeForce Experience и ожидание багфикса от авторов. В системе Windows 8 ошибка не проявляется

LineAge 2

Основной процесс L2.exe представляет собой 32-разрядное приложение. На 64-разрядных системах в импорте бывают ошибки, связанные с отсутствием функций (InterlockedIncrement, InterlockedDecrement) в таблице экспорта библиотеки kernel32.dll. Эти функции не работают на 64-разрядных системах, вместо них должны использоваться другие (InterlockedIncrement64, InterlockedDecrement64). Даже на официальном сайте Lineage есть упоминание о том, что 64-разрядные системы не поддерживаются, и что программа может работать некорректно (http://www.lineage2.com/en/game/download/system-requirements/).

Далее, если у вас в системе процессор AMD, то это ещё более усложняет проблему. У него есть два режима работы. В основном режиме - Long Mode - упразднены некоторые элементы x86 архитектуры, поэтому нет гарантии, что в такой системе заработает любое 32-разрядное приложение. В Legacy Mode он предоставляет полную совместимость с 32-разрядной системой. Не знаю, как это переключить и возможно ли. Но в этом режиме точно не будет работать ни одна 64-разрядная программа.

Однако, мне известны случаи, когда LineAge 2 всё-таки удавалось запустить после очистки реестра CCleaner'ом или после отключения службы Lanman Workstation

The Witcher 2 (Ведьмак) 

Про него уже можно написать доклад и выступать с ним на митинге. Обнаруженные проблемы с запуском, приводящие к появлению ошибки 0xC0000142:

  • Программа выдает ошибку 0xC0000142 при установленном антивирусе Kaspersky Internet Security (а так же, Kaspersky Anti-Virus) 2011 после загрузки библиотеки kloehk.dll либо mzvkbd3.dll. Ошибка устранена после обновления KIS (KAV) до версии 2012.
  • Другая причина ошибки 0xC0000142 - в пакете Microsoft .Net Framework. Для устранения ошибки следует (пере)установить этот пакет с официального сайта 
  • В работу приложения самым странным образом вмешивается процесс datamngrUI.exe, который обычно находится в C:\Program Files\Searchqu Toolbar\Datamngr, и пытается инжектить свои библиотеки datamngr.dll и IEBHO.dll в память Ведьмаку, явно снося ему крышу. По сообщениям мистера Гуглинга, процесс занимается весьма нехорошими вещами: принудительно подменяет стартовую страницу браузеров и впечатывает свои панельки в IE и аддоны в FireFox. Так что, очевидно, должен быть убит на месте вместе со всей своей бандой. После очищения от заразы игра должна запуститься. Другие известные пути её прописки: C:\Program Files\Windows iLivid Toolbar, C:\Program Files\Searchcore Toolbar.
  • В процесс загрузки вмешивается библиотека appinit_dll.dll от компании Lucidlogix Inc. Проблема должна решиться удалением программ, расположенных обычно по адресу %PROGRAMFILES%\Lucidlogix Technologies.
  • Ведьмак не захотел запускаться, обнаружив на своем пути библиотеку r3god.dll, принадлежащую программе для удаленного администрирования (читай: слежке за пользователем) - Remote Administrator, или просто RAdmin. Для убийства обоих зайцев - ошибки 0xC0000142 и RAdmin'а - следует найти, каким образом библиотека загружается в систему. Если открыто установлен RAdmin - то деинсталлировать его. В моем случае я нашел загрузку библиотеки r3god.dll через AppInit_DLLs - раздел реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows
  • Процесс падает с ошибкой 0xC0000142, если в системе присутствует библиотека acaptuser32.dll, которая является частью плагина Adobe Acrobat's Capture 3D. Библиотека обычно находится в папке C:\Windows\System32 или C:\Windows\SysWoW64 (на 64-разрядных системах). Соответственно, для устранения ошибки достаточно отключить этот плагин, либо просто переименовать эту библиотеку (но я бы не рекомендовал, ибо возможно чревато появлением других оишибок).

Ошибка 0xC0000142 при выключении (перезагрузке)

Если ошибка 0xC0000142 возникает, например, в процессе cmd.exe только при выключении (перезагрузке) компьютера, то виноват в этом не сам процесс cmd.exe, а тот, кто запускается при помощи него при старте операционной системы. Например, нечто под названием "AMD Accelerated Video Transcoding device initialization", относящееся к пакету драйверов видеокарты AMD Catalyst имеет исполняемый файл kdbsync.exe и при этом сидит в автозагрузке в виде:

cmd.exe /c start "AMD Accelerated Video Transcoding device initialization" /min "C:\Program Files (x86)\AMD AVT\bin\kdbsync.exe" aml

В этом случае на ошибки стоит проверять не cmd.exe,  а процесс kdbsync.exe, хотя в данном примере автозапуск этого процесса можно просто отключить в реестре: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run, параметр AMD AVT.

Ошибка 0xC0000142 в процессе cmd.exe и других консольных приложениях

Если процесс cmd.exe падает на взлете, а в логе видна загрузка только библиотек ntdll.dll, kernel32.dll, kernelbase.dll, то проблема с большой долей вероятности заключается в измененной библиотеке kernel32.dll, которая не смогла инициализироваться. В логе Dependency Walker указывается, что DllMain вернула 0 (то есть ошибку). Следует обратить внимание на дату изменения этой библиотеки и вспоминать, кто или что вносили изменения в системных файлах.

Ошибка при инициализации приложения 0xC0000135

Если в логе программы указано, что процесс уничтожен с кодом 0xC0000135, то для устранения этой ошибки необходимо установить .NET Framework.

Ошибка при инициализации приложения 0xC000001D

Перед завершением процесса может возникать исключение 0xC000001D - Попытка выполнить недопустимую команду. Обычно связано с тем, что процессор не поддерживает набор команд SSE2. Лечится заменой процессора, либо поиском такой же программы, скомпилированной без поддержки это набора команд.