c++ - 可以阻止单个应用程序的 Microsoft 错误报告吗?

标签 c++ crash unmanaged

我们有一个非托管 C++ 应用程序,它利用第 3 方 API 来读取 CAD 文件。在某些损坏的 CAD 文件上,第 3 方库崩溃并导致我们的 EXE 崩溃。因此,我们的主应用程序是一个单独的 EXE,这样它就不会受到崩溃的影响。但是,我们最终会遇到恼人的 Microsoft 错误报告对话框。

我不想在系统范围内禁用 Microsoft 错误报告。有没有办法关闭单个应用程序的错误报告,这样如果它崩溃了,它会静默崩溃而不会弹出错误对话框?

最佳答案

在 Vista 及更高版本上,WerAddExcludedApplication API 函数可用于从错误报告中排除指定的应用程序可执行文件。据我所知,在 XP 和其他旧版操作系统上没有类似的选项。

但是,由于 WER 只会启动未处理的应用程序异常,您应该能够通过向 EXE 添加“包罗万象”的异常处理程序来抑制它。参见 vectored exception handling有关如何实现这一目标的一些想法。

请注意,抑制所有未处理的异常通常不是一个好主意(例如,会导致您的应用无法通过 Windows Logo 认证),因此您不应随意使用此技术...

关于c++ - 可以阻止单个应用程序的 Microsoft 错误报告吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3416413/

相关文章:

c++ - Armadillo 稀疏实矩阵与复 vector 的乘法

c++ - 将 allegro 4 移植到 allegro 5

macos - 对话框在 Android Studio IDE 中显示为选项卡,然后 IDE 变得无响应

arrays - 当读取的内容远大于分配给数组的内存时,程序如何关闭?

mono - 不受管理的: IP: 0x26eb76,故障地址中的堆栈溢出:0xbf808ffc

c++ - 为什么 CWnd::CreateEx 无法创建我的窗口?

构造函数中的 C++14 constexpr union 条件初始化

尝试对列表进行排序时崩溃

c++-cli - 坚持从非托管 C++ 调用约定调用托管 CLI 方法

.net - native 代码和托管代码之间的区别?