我如何保护我的 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/