我们发布了一个 Windows 桌面应用程序(使用 Visual C++ 2013 和 v120_xp 平台工具集构建),它在 Windows 10 上运行良好,但我们已经开始收到安装了“阈值 2”更新的用户的报告,我们的应用程序现在无法开始,显示以下错误消息:
应用程序无法正确启动 (0xc0000142)。单击确定关闭应用程序。
错误代码是 STATUS_DLL_INIT_FAILED,所以我们大概是在寻找未能初始化的 DLL。
我们通过在调试器中观察应用程序启动并使用进程监视器查看正在加载哪些 DLL 来尝试解决此问题。最后加载的 DLL(在安装了 Threshold 2 的机器上)是“davhlpr.dll”。当我们看到我们的应用程序在没有阈值 2 的情况下在 Windows 10 上启动时,它启动时显然根本没有加载该 DLL。这表明问题可能与 davhlpr.dll 有关,但我们的代码并未明确依赖于该 DLL,我也不知道它是什么。
有没有其他人见过这样的事情?
有没有人对我们如何解决这个问题有任何想法?在尝试了调试器和进程监视器之后,我没有想法了。