C++程序发生崩溃闪退后为什么会自动重启?是因为程序中启用了重启管理器,系统感知到程序异常退出后自动重启程序
最近在使用sdkdemo程序测试我们的SDK功能时发现当我们关闭程序后程序确实关闭了程序居然又自动启动起来了后来运行Debug版本的sdkdemo在关闭程序时会弹出报错提示框估计是程序在退出时产生了异常崩溃然后系统自动将程序重启了。自动重启程序还是第一次遇到于是到网上搜了一下才知道从VS2010开始创建的MFC工程默认启用了重启管理器VS2010及以上版本都会默认启用重启管理器当程序发生异常崩溃后系统会自动重启程序。我们的sdkdemo程序就是用MFC框架创建的。我们在使用VS2010创建MFC工程时会弹出创建向导依次点击下一步在向导的高级页面中可以看到默认勾选了“支持重新启动管理器”选项勾选该选项后创建向导自动生成的代码中在自动生成的工程APP类CTestD1gApp的构造函数中会自动添加一行代码CTestD1gApp的基类CWinApp的InitInstance接口中会检测该m_dwRestartlanagerSupportFlags标志如果发现启用了重启管理器选项会调用 CWinApp::RegisterWithRestartManager向系统注册启用重启管理器。我们的sdkdemo程序是若干年前用VS2010创建的默认启用了重启管理器所以当程序关闭时发生崩溃系统会重启程序。如果要禁用程序的自动重启有两个办法1在工程App中将m_dwRestartlanagerSupportFlags AFX_RESTART_MANAGER_SUPPORT_RESTART;这句代码移除。2在程序中调用API接口UnregisterApplicationRestart禁用自动重启机制。此外Windows Vista及以上系统才支持重启管理器比如Vista、Win7、Win8、Win10等。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2470121.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!