在 运行 时间禁用系统错误弹出窗口(DLL 依赖项)

Disable System Error Popup On Run time (DLL Dependencies)

我正在开发一个 WINAPI 项目,它有一些 .dll 依赖项。 只是为了澄清,见下文:

MyApplication.exe
Util.dll
MySpecialValuable.dll

假设我从文件夹路径中删除了 MySpecialValuable.dll;我会收到这样的消息: 我的问题是,有没有办法可以完全禁用弹出窗口 - 静默退出?或者以某种方式在弹出窗口中隐藏 .dll 的名称? 这对大多数人来说似乎毫无意义,但我不想公开我正在使用的库。

如果您不使用导入库 link 到 .dll,而是在运行时使用 LoadLibrary() 加载它,您可能会静默失败。

你不能"silently exit"。系统显示对话框时,进程还没有开始执行用户代码。加载程序在执行用户代码之前解析导入。

虽然有可能配置系统以防止错误对话框(我不知道)的方法,但您还有其他选择:

  • 显而易见的一个:发送所有依赖项。作为作者,您知道您的依赖关系。当所有导入都可以在加载时解析时,不会有任何错误消息。
  • 推迟导入解决方案,直到您有机会处理失败。将相应的 DLL 标记为 /DELAYLOAD will allow you to do that. See Linker Support for Delay-Loaded DLLs 以获取更多信息。
  • 使用run-time dynamic linking.

确保您理解,none 这些选项将为您最终要实现的目标提供解决方案。用户可以轻松启用 loader snaps 并获得有关加载到您的进程中的每个模块的完整信息。