c# - 防止 C# 应用进程终止

标签 c# windows process

我如何保护我的 C# 应用程序免受有人通过 taskman 或以编程方式终止其进程的影响?

这是我的场景:

应用 A 是另一个团队开发的 MFC 应用。它有一个未发布的基于文本的远程界面,该界面通过后门启用。

我正在开发应用程序 B,这是一个与 A 交互的 C# WinForms 应用程序。B 在需要远程访问时启用 A 的后门,并在完成(或失败)时关闭它。

我正在探索用户滥用 B 以访问 A 的隐藏功能的方式,例如在启用 A 的远程接口(interface)后终止 B 的进程。当这种情况发生时,我希望 B 有最后一次机会关闭 A 的后门。

B 使用本地主机与 A 交互,所以我不担心掉电情况。

我正在寻找不涉及更改 A 的解决方案。

我并不期望能够阻止 Dark Tangent(尽管那将是一个奖励),但现在脚本小子可以用这个设计来实现他的方式:)

这些应用程序可在 Windows XP 上运行,但也将很快支持 Vista 和 7。

提前致谢, 吉姆

最佳答案

I'm willing shut the app down when they try but need to do some things first.

在程序关闭时执行必要的步骤会导致易损坏的程序。即使您可以阻止某人通过任务管理器终止您的程序,您也无法阻止他们关闭计算机,甚至无法阻止他们将电缆从墙上拔出。任何必须完成的至关重要的任务都将丢失。如果停电了怎么办?同样,您的任务不会完成,您的重要清理代码也不会运行。

相反,您应该让您的程序在任何时候都对故障具有鲁棒性。使用事务,并始终以原子方式将状态保存到文件 - 确保您始终至少拥有一份有效的数据副本。不要以暂时无效的方式覆盖重要文件。

最后,您可以向您的程序添加一个对话框,当他们试图关闭它时,警告他们该程序需要正确关闭。如果你让你的关机速度很快,用户就不会想要杀死它并让它正常终止。如果您的关机需要很长时间,那么人们会试图杀死它。如果您对用户友善,他们也会对您友善。

如果快速关闭意味着用户将丢失一些未完成的工作,那么就警告他们并让他们有机会等待任务完成,但如果他们真的想退出你的程序,那就让他们退出吧。

关于c# - 防止 C# 应用进程终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3121746/

相关文章:

c# - 如何做 RegAsm 使其涵盖 32 位和 64 位?

c++ - #error WINDOWS.H 已包含在内。 MFC 应用程序不得#include <windows.h>

c# - 将文本框数据绑定(bind)到 Form.Text(标题)

windows - 缺少 meta 和 alt 键?

c# - 使用 C# Lambda 分割字符串和搜索值

c - current->pid 如何在 linux 上工作?

c# - Process.Kill 不杀死进程

java - System.exit(1) 的替代方案

c# - Microsoft 如何从 DLL 的元数据中隐藏 C# 内部类?

C#递归函数添加