如何制作一个在Windows中无法杀死的程序?

时间:2009-05-28 17:36:20

标签: c# .net windows process

我们正在为我们公司内部使用制作一个Jabber客户端,不知怎的,我们需要抓住用户试图杀死程序以实际重启它或者让用户无法杀死客户端的那一刻。

这可能吗?

我们的Jabber客户端将使用C#编写。

我将如何完成这项工作?

19 个答案:

答案 0 :(得分:40)

您要求的内容远远超出您要求完成的内容。例如,如果无法杀死进程,Windows如何正常关闭?

我不认识你的老板,所以你必须衡量他们对你自己的理解程度。如果用户/经理问我这个问题,我将不得不深入探究他们的真正含义。我怀疑你的用户希望默认关闭行为最小化到系统托盘而不是退出程序,类似于大多数即时消息客户端,而不是根本无法关闭程序。

答案 1 :(得分:26)

首先我要说的是,这是一个可怕的想法。

但是......如果你必须这样做,我看到恶意软件和垃圾邮件猎犬的方式是创建3个正在运行的进程,一个是主进程,另外两个将监视并重启任何被杀死的进程。普通用户很难同时杀死3个进程。

答案 2 :(得分:18)

听起来像病毒。

答案 3 :(得分:13)

由于这是内部的,您可以创建一个单独的Windows服务来监视活动进程。如果您的jabber客户端的进程不存在,您可以重新启动它。

然后使用权限阻止他们访问Windows服务以禁用它。

答案 4 :(得分:7)

我认为你应该向需求设计师询问他们对应用程序的意义,这是不可能“杀死”的。他们用“杀戮”这个词得到了什么?

  • 不允许用户关闭其程序
    • 防止在窗口中标准使用X按钮?
    • 最小化到任务托盘?
    • 不允许他们在任务管理器中关闭应用程序?
  • 不允许操作系统关闭程序

这个要求含糊不清,我会和需求设计师/老板谈谈,以便更好地了解他们想要的东西。

答案 5 :(得分:5)

这听起来不仅仅是一个坏主意(对您的用户来说是滥用),但您无法阻止用户自行终止该进程。

您必须运行两个单独的进程 - 一个用于运行应用程序,另一个用于监视第一个进程并在必要时重新启动它。

答案 6 :(得分:4)

你做不到。你可以让它变得更难,但并非不可能。请参阅The arms race between programs and users

答案 7 :(得分:3)

在他们无法杀死进程之前,您必须减少用户权限。

答案 8 :(得分:3)

使用Windows服务控制它。在C#中很容易做到。锁定权限以停止服务。

注意:我认为“这不可能/可怕/邪恶”的答案可能会忽略你的观点。服务是专门设计的“继续前进”,这就是您所要求的。

答案 9 :(得分:2)

更重要的是,为什么你会重写一个jabber客户端,而像Miranda和Pidgin这么多好的客户已经存在?如果是用于日志记录,您可以轻松地在Jabber服务器上执行该服务器端,而不是依赖于客户端。

如果要阻止其他IM服务,强大的防火墙规则将有助于阻止它(但它不会阻止它通过https将AIM + Gtalk代理到其家庭服务器的超级天才)。

答案 10 :(得分:1)

听起来您可以访问jabber客户端。你能用它的状态和启动时间将它轮询到一个单独的位置吗?你没有禁用杀死它的能力......但至少你可以跟踪它并从那里做出回应。

答案 11 :(得分:1)

除SIGKILL外,您可以使用处理程序捕获大多数信号。

您可以创建一个看门狗窗口进程,以便在应用程序终止时重新生成它。

如果你愿意,你可以将这个过程命名为非常无害的听起来像“sysmon”,所以它看起来并不像粗略。

我希望这是工作的要求,而不是你导致人类垮台的方法。

答案 12 :(得分:1)

这不应该由您的桌面组控制吗?我们在几个信息亭中安装了个人电脑,允许员工检查个人电子邮件和内容(Gmail,Yahoo,Hotmail等),而这些PC上的用户权限将不允许用户杀死进程。

如果IE锁定,有点烦人,但我能理解其中的原因。

答案 13 :(得分:1)

听起来像是this

的情况

答案 14 :(得分:1)

承诺暂停杀死流量记录器 Jabber客户端的用户?

答案 15 :(得分:0)

我同意这是一个糟糕的想法

话虽如此,你要创建两个程序(可能是 Windows服务)。这两个程序都会相互监视以及作为客户端运行。您需要共享内存,两个进程都可以访问同步哪个客户端处理传入请求。

答案 16 :(得分:0)

  1. 您可以阻止用户通过GPO运行TaskManager。
  2. 您可以将您的应用程序创建为Windows服务,并防止用户手动终止任务(只能从services.msc中杀死)
  3. 试着绑手: - )

答案 17 :(得分:0)

执行操作并进行表单关闭事件,并在c#中键入e.cancel = true;

答案 18 :(得分:-2)

除非你真的在编写病毒,否则你应该能够阻止他们使用权限终止进程。假设他们都是域用户,而您就是管理员。

我想在某些情况下你会想要这样做。您不希望用户制造安全漏洞。我无法在工作计算机上退出或更改Norton端点的任何设置,但它还没有打扰我。

但是如果所有用户都是他们机器上的管理员,并且你想让它无法关闭,并且大概不可能从安全制造和删除......那么你就会问:"如何我会编写恶意软件吗?"