在 运行 时间禁用系统错误弹出窗口(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 并获得有关加载到您的进程中的每个模块的完整信息。
我正在开发一个 WINAPI 项目,它有一些 .dll 依赖项。 只是为了澄清,见下文:
MyApplication.exe
Util.dll
MySpecialValuable.dll
假设我从文件夹路径中删除了 MySpecialValuable.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 并获得有关加载到您的进程中的每个模块的完整信息。