gpt4 book ai didi

.net - 有没有办法在 Windows (.NET) 中拦截进程 "Kill"命令?

转载 作者:可可西里 更新时间:2023-11-01 14:45:40 26 4
gpt4 key购买 nike

我有一个用 .NET 4.0 (c#) 编写的 Windows 控制台应用程序,如果应用程序/进程异常终止(例如,从任务管理器中终止,或通过操作系统关闭),是否有任何方法可以拦截它,以便可以执行一些清理代码吗?

感谢您的帮助。

最佳答案

您无法检测到您自己的进程正在被终止。当有人使用您的进程调用 NtTerminateProcess() 并且他们有权这样做时,您不会被告知。你的线程全部停止,你的进程从你下面消失。

谢天谢地,大多数清理不需要手动完成——所有你没有释放的内存都将被操作系统回收,所有那些你没有关闭的系统句柄将被自动清理,所有您以 TEMPORARY 打开的临时文件中的一部分(您这样做对吗?)将被自动删除。

原因很简单。如果您决定通过任务管理器终止程序 - 那是因为用户认为它行为不当。如果您随后告诉它停止不当行为,那么它可能会忽略您,因为它正在不当行为。

似乎更好的流程管理方法是为您提供退出流程的合法方式 - 通过处理 WM_CLOSE 事件的窗口或通过在控制台中运行它可以是通过角落的红色 X 按钮中止。任务管理器是万不得已的措施。如果用户不厌其烦地使用 Ctrl+Alt+Del 将您的进程搞死,您就没有第二次机会了。

关于.net - 有没有办法在 Windows (.NET) 中拦截进程 "Kill"命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com