【问题标题】:Disable WER while application is running在应用程序运行时禁用 WER
【发布时间】:2012-09-09 20:22:28
【问题描述】:

我正在开发一个不断打开 IE、执行任务、关闭它然后重复的应用程序。但是,如果 IE 在执行期间崩溃,系统准备继续进行下一次迭代,但是错误报告保持打开状态并且不允许进程完全关闭。这意味着它会继续占用内存,直到用户单击说忽略错误的对话框。

目前我正在研究两种解决方案,使用 VectoredExceptionHandlers,以及完全禁用 WER 的能力。

我对 VectoredExceptionHandlers 的理解是,它们会拦截我的应用程序抛出的任何异常,并在它们进入 WER 之前对其进行处理。但是,由于崩溃实际上发生在我的应用程序启动的 IE 进程中,我不确定这些处理程序是否仍然能够阻止 WER 接收异常。

我也不希望像 StackOverflow 上的其他问题所建议的那样在系统上完全禁用 WER,我只希望在我的应用程序运行时禁用它。

有没有人对这些选项有更多的了解或有更好的方法来处理这个问题?

【问题讨论】:

  • 我想指出,WER 并不是唯一需要禁用的类似 WER 的麻烦。 Windows 上还有其他几种无处可寻的对话拍摄机制。如果这个 questoin 可以发展成一个全面的参考来禁用它们,那就太好了。

标签: c++ windows-error-reporting


【解决方案1】:

来自 MSDN 的 WER Settings 页面可能是您想要查看的内容。注册表中有一个部分用于排除的应用程序。似乎有这个WerAddExcludedApplication 函数可以调用。从Vectored Exception Handling 上的页面来看,它可能无法帮助您从其他应用程序中捕获异常。

【讨论】:

  • 我的印象是矢量异常处理不起作用,所以我很高兴你至少可以确认那篇文章。去看看 WerAddExcludedApplication 看看它是否有效。
  • @EEP 请记住,这个函数所做的一切可能只是编写注册表。您可能需要重新启动计算机才能看到效果。在这种情况下,它会有点糟糕。
猜你喜欢
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2011-03-18
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 2014-09-06
  • 2015-07-24
相关资源
最近更新 更多