Мы публикуем настольное приложение Windows (созданное с помощью Visual C ++ 2013 с набором инструментов платформы v120_xp), которое отлично работало в Windows 10, но мы начали получать отчеты от пользователей, которые установили обновление «Порог 2», которое наше приложение теперь не может начать, показывая следующее сообщение об ошибке:
Приложение не удалось запустить правильно (0xc0000142). Нажмите кнопку ОК, чтобы закрыть приложение.
Код ошибки — STATUS_DLL_INIT_FAILED, поэтому мы, вероятно, ищем DLL, которая не может быть инициализирована.
Мы предприняли несколько попыток решить эту проблему, наблюдая за запуском приложения в отладчике и используя Process Monitor, чтобы увидеть, какие DLL загружаются. Последняя загруженная DLL-библиотека (на компьютере с установленным Threshold 2) — «davhlpr.dll». Когда мы наблюдаем, как наше приложение запускается в Windows 10 без Threshold 2, оно запускается без видимой загрузки этой DLL. Это говорит о том, что проблема может быть связана с davhlpr.dll, но наш код явно не зависит от этой библиотеки DLL, и я понятия не имею, что это такое.
Кто-нибудь еще видел что-нибудь подобное?
У кого-нибудь есть идеи относительно того, как мы можем устранить эту проблему? Попробовав отладчик и Process Monitor, у меня закончились идеи.
В конце концов мы дошли до сути. Подход, который мы выбрали, был следующим:
Короче говоря: выясняется, что сбой произошел из-за компонента Windows под названием «fwbase.dll» (по-видимому, часть брандмауэра Windows), который по какой-либо причине пытался загрузить comdlg32.dll. Наше приложение включало компонент с именем «fwBase.dll» (часть библиотеки AMD Framewave), и загрузчик Windows, по-видимому, не пытался загрузить fwbase.dll, так как считал, что он уже загружен. Катастрофа последовала вскоре после этого.
На данный момент, я не уверен, является ли это ошибкой в Windows или чем-то, но мы решили ее, переименовав fwBase.dll.
Я столкнулся с аналогичной проблемой, когда программа скомпилирована & запущена без каких-либо проблем на Win 7 (также на сервере Win 2008), но не удалась для машины с Win 10. Один из приемов, который мне помог, заключался в «устранении неполадок» исполняемого файла (с использованием ОС Win 10).
Обязательно «Протестируйте программу» и двигайтесь дальше, чтобы наконец выбрать опцию «Сохранить настройки».