如何检测终止进程事件、计算机关闭和计算机崩溃

How to detect a kill process event, a computer's shut down and computer's crash

本文关键字:计算机 崩溃 事件 进程 何检测 检测 终止      更新时间:2023-10-16

我正在尝试开发一个在后台(在Windows中)运行的C++MFC应用程序,我有一个问题,我找不到完整的答案。

如何检测用户何时尝试通过任务管理器通过杀死进程关闭它,何时通过关闭计算机关闭它以及何时运行此应用程序的计算机崩溃?

知道我有一个与此应用程序交互的外部数据库(SQL Server 2008)。

您可以按照上述建议处理WM_QUIT。还有WM_QUERYENDSESSION及其家人。

对于没有 GUI 的服务,请使用 RegisterServiceCtrlHandlerEx 获取通知。

另一方面,为了在您自己的应用程序崩溃时进行拦截,您会弄乱结构化异常处理程序,尽管当它发生时,您可能没有可靠的数据。

最后,当计算机本身崩溃时,您将无能为力,行为只是未定义。

无论如何,您无法确保有一个健康的数据库会话,即使空闲太久,您也可能丢失数据库会话有无限的原因。

您应该将系统设计为对极端情况具有一定的容错能力,例如使用事务、回滚机制、击中风扇时的可追溯记录等。