【问题标题】:Prevent Force Killing of Application Process防止强制终止应用程序进程
【发布时间】:2012-03-01 06:52:13
【问题描述】:

我有一个非常关键的进程,它将在我的 winform 应用程序的后台运行。

如何防止用户结束我的 winform 应用程序进程?

我想阻止用户:

  • 任务管理器结束进程
  • 在我的应用程序结束之前关闭计算机
  • 任何其他与软件相关的杀死进程的方法(当然我不能阻止用户按下他的 CPU 的电源按钮)

我的代码是 C#,框架 4,在 VS2010 Pro 中构建。

提前致谢。

【问题讨论】:

  • 用户拥有他的计算机,为什么要阻止他杀死你的应用程序??
  • @BasileStarynkevitch 因为有重要进程仍在运行(强行结束可能会导致数据不准确),他可以在结束时关闭它。此外,公司拥有计算机,而不是用户。
  • 那么公司的系统管理员总是能够并且可能有正当的兴趣停止您的进程。它更像是一个社会问题(教用户和系统管理员避免这样做)而不是技术问题。在某些情况下需要重新启动计算机......而且电源也可能会下降......

标签: c# winforms .net-4.0 thread-safety


【解决方案1】:

说明您的 'absolute' 需要保持此流程运行,我真的建议您将流程的关键部分从您的 winforms 应用程序中分离出来,并将这部分从用户机器转移到公司服务器。
在此服务器上编写一个服务,让您的重要工作始终保持活力并随时运行。
此类“绝对”要求只能在具有冗余磁盘、UPS 单元以及(尤其是)知情的系统管理员的服务器机器上实施。

【讨论】:

  • +1 如果您找不到知情的系统管理员,您将不得不使用其中一位普通管理员。
【解决方案2】:

基本上不可能阻止用户杀死进程(你甚至可以杀死 explorer.exe,它是 windows 的 shell)。

因此,建议您编写应用程序的方式使其能够适应用户操作或崩溃。在您的情况下,在该过程中进行可恢复操作是明智的。

【讨论】:

    【解决方案3】:

    您不能绝对确保这些事情,但您可以通过以下方式获得一些您想要的东西:

    1) 仅在为进程分配安全级别的 Vista 或更高版本的 Windows 上运行

    2) 以管理员身份运行您的进程,因此它是最高安全级别。

    3) 确保 UAC(用户帐户控制)已打开。

    4) 关闭已登录用户帐户对任务管理器的访问权限(通过组策略)

    5) 无法让已登录的用户升级为管理员,这样他就无法运行任何有权停止您的进程的程序。

    6) 使用Shutdown script 检查您的进程是否正在运行并防止关闭。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      相关资源
      最近更新 更多