4

我正在开发一个商业 Windows 7 桌面应用程序(有点收缩包装,但不完全)。该应用程序具有 Windows 服务和 WPF 用户界面组件。如果我们的应用程序在客户站点发生故障,我们希望能够捕获有关运行时环境的信息,包括将我们的进程崩溃转储到转储位置。然后,可以根据要求将该信息转发给我们的支持人员以进行进一步调查。我们还希望关闭任何可能因故障而弹出的Windows 错误报告发送到 Microsoft对话框。

重要的是我们只希望它影响我们的应用程序流程。我们不想影响某些全局设置,这些设置会改变客户桌面上所有其他应用程序报告致命错误的方式。

我正在寻找在收缩包装应用程序中执行此类操作的一些建议和最佳实践。

4

1 回答 1

3

我知道如何做到这一点的最好方法是订阅该AppDomain.CurrentDomain.UnhandledException活动。在那里,您将能够使用 Win32 API 函数MiniDumpWriteDump创建您自己的 minidump 文件。查看此博客文章以查看一个很好的示例。此外,还有ClrDump库。

在您退出 UnhandledException 处理程序之前,调用Environment.Exit()并且您应该不会再看到任何 Windows 错误对话框。

我自己还没有真正使用过这些小型转储库,但我很快就会使用。希望这个答案至少会给您一些可以插入 Google 的关键字。

于 2011-07-19T17:52:25.720 回答