如何检测终止进程事件、计算机关闭和计算机崩溃
How to detect a kill process event, a computer's shut down and computer's crash
我正在尝试开发一个在后台(在Windows中)运行的C++MFC应用程序,我有一个问题,我找不到完整的答案。
如何检测用户何时尝试通过任务管理器通过杀死进程关闭它,何时通过关闭计算机关闭它以及何时运行此应用程序的计算机崩溃?
知道我有一个与此应用程序交互的外部数据库(SQL Server 2008)。
您可以按照上述建议处理WM_QUIT。还有WM_QUERYENDSESSION及其家人。
对于没有 GUI 的服务,请使用 RegisterServiceCtrlHandlerEx 获取通知。
另一方面,为了在您自己的应用程序崩溃时进行拦截,您会弄乱结构化异常处理程序,尽管当它发生时,您可能没有可靠的数据。
最后,当计算机本身崩溃时,您将无能为力,行为只是未定义。
无论如何,您无法确保有一个健康的数据库会话,即使空闲太久,您也可能丢失数据库会话有无限的原因。
您应该将系统设计为对极端情况具有一定的容错能力,例如使用事务、回滚机制、击中风扇时的可追溯记录等。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- CoInitialize()在单独的线程上崩溃而不返回
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 为什么我的多线程作业队列崩溃
- ExtractIconEx:可以工作,但偶尔会崩溃
- 为什么引用传递会导致此崩溃(C++)
- Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话
- 视窗驱动程序IOCTL代码蓝屏/使计算机崩溃
- 如何检测终止进程事件、计算机关闭和计算机崩溃
- OpenCV人脸检测使计算机崩溃
- 使用删除会使我的计算机崩溃
- 为什么这行代码会导致计算机崩溃
- 访问计算机指针时发生访问冲突(c系统异常代码:c0000005),导致应用程序崩溃