应用程序无法正确启动(0xc0000018) - Windows 8 x64

应用程序无法正确启动(0xc0000018) - Windows 8 x64

今天我启动了计算机,出现了一些类似这样的错误,所以自动运行中的某些程序没有启动:

应用程序无法正确启动 (0xc0000018)。单击“确定”关闭应用程序

我打开很多程序时都会出现这个错误,我甚至无法使用 7zip。我昨天唯一做的事情是通过 Steam 安装一个游戏,现在我无法使用电脑上大约 70% 的软件(大多数软件在整个程序上都会出现这个错误,有些只在程序的某些模块上出现)。

我刚刚运行了SFC /scannnow,结果是:“Windows 资源保护未发现任何完整性违规”。

这可能是某种病毒或 Steam 搞乱了什么吗?我该怎么办?

答案1

恐怕很少有人知道神秘的 0xC0000018 EXE 启动错误的根本原因,因为微软对此含糊其辞,甚至直到 Windows 10 也是如此。在阅读 Jeffrey Richter 的适用于 MS Windows 的编程应用程序第四版,我偶然发现了这一点。

如果 DLL 需要在固定地址(进程虚拟地址空间中)加载,但无法满足要求,Windows 就会断言 0xC0000018 错误。但是没有明显的线索来判断哪个 DLL 导致了问题。简单地在 Google 上搜索“0xC0000018”就会让你看到一大堆困惑的用户帖子。

为了重现,您可以准备一个包含一个 EXE 和两个 DLL 的解决方案(Visual Studio 术语),并将两个 DLL 设置为具有链接器选项/FIXED /BASE:"0x44440000",并让 EXE 隐式加载这两个 DLL,然后您将在 EXE 启动时看到 0xC0000018 错误。

是的,清除APPINIT_DLLS注册表是摆脱潜在罪魁祸首的第一步。这些 DLL(可能来自恶意软件/间谍软件)将被加载到您启动的每个进程中,因此可能会毁了您的生活。

我认为微软设计此 DLL 强制加载功能是为了开发/调试目的,因此对于普通用户来说,它APPINIT_DLLS应该保持空的。

那么如何确定真正的罪魁祸首 DLL?也许有一种方法,使用 dumpbin.exe 检查每个 DLLAPPINIT_DLLS或其他可能自动加载的 DLL(帮助自动运行),用 逐一检查dumpbin -headers。如果没有.reloc部分,则为固定位置动态链接库。

答案2

感谢所有的建议,经过一些谷歌搜索后,我发现这个解决方案实际上看起来对我有用:

  1. 按 Win+R 并输入regedit
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\­Microsoft\WindowsNT\CurrentVersion\Windo­­ws
  3. 然后搜索APPINIT_DLLS并删除其中的所有内容
  4. 重启

答案3

我已经通过 Steam 安装了大约 40 款游戏,没有遇到任何问题,不,我不认为 Steam 有问题。尝试使用 Windows 还原点还原系统:http://windows.microsoft.com/en-ph/windows-vista/system-restore-frequently-asked-questions

[编辑] 也许遗漏了一些 DLL,您可以使用 Dependency Walker 测试无法启动的程序的依赖关系:http://www.dependencywalker.com/

答案4

这可能与以下 MS 更新和 McAfee Data Loss Prevention Endpoint (DLP Endpoint) 有关。似乎 MS 更新和 McAfee Data Loss Prevention Endpoint 之间存在冲突。

请访问以下网站: 安装 Data Loss Prevention Endpoint 后,Windows 7 上的 Microsoft 补丁 MS15-038 Microsoft 安全公告 MS15-038 - 重要

相关内容