我怎样才能让一个程序在Windows中不可能被杀死?

我们正在制作一个Jabber客户端供我们公司的内部使用,不知何故,我们需要赶上用户试图杀死程序来实际重新启动它的时刻,或者让用户不可能杀死客户端。

这可能吗?

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

我将如何去完成这个?

你所要求的含义远远超出了你被要求完成的含义。 例如,如果进程不能被杀死,Windows如何能够正常关闭?

我不认识你的老板,所以你将不得不衡量自己的理解水平。 如果用户/经理问我这个问题,我将不得不深入探索他们的真正含义。 我的怀疑是,你的用户需要默认的关闭行为,尽量减少到系统托盘,而不是退出程序,类似于大多数即时消息客户端,而不是根本不能关闭程序。

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

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

听起来像病毒。

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

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

我想你应该去问问需求设计师他们所说的app是什么意思,这是不可能“杀死”的。 他们对“杀”这个词有什么看法?

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

这个要求足够模糊,以至于我会和需求设计师/老板谈谈,以便更好地了解他们想要的东西。

这不仅听起来像一个坏主意(这是对你的用户滥用),但你将无法阻止用户杀死进程本身。

您将不得不运行两个独立的进程 – 一个运行应用程序,另一个监视第一个进程,并在必要时重新启动它。

你不能。 你可以让它更难,但不是不可能的。 请参阅程序和用户之间的军备竞赛 。

你必须减少他们的用户权限,直到他们不能杀死进程。

用Windows服务控制它。 易于在C#中完成。 锁定权限以停止服务。

注:我认为“这是不可能的/可怕的/邪恶的”的答案可能没有你的观点。 一个服务是专门设计的“继续”,这是你问的。

更重要的是,你为什么要重写一个jabber客户端,如许多好的,如Miranda和Pidgin已经存在? 如果是用于日志记录,你可以很容易地在你的Jabber服务器上做服务器端,而不依赖于客户端。

如果是为了防止其他即时消息服务,健壮的防火墙规则将有助于阻止这种情况发生(但是它不会阻止超级天才将代理通过https代理AIM + Gtalk到他们的主服务器)。

除了SIGKILL外,你可以用处理程序捕捉大部分信号。

您可以创建一个看门狗窗口过程,在终止的情况下重新生成应用程序。

如果你愿意,你可以命名这个过程非常无害,像“sysmon”,所以它看起来不像草图。

我希望这是对工作的要求,而不是你的方式来造成人类的衰落。

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

这不应该由您的桌面组? 我们有几台电脑,让同事检查个人的电子邮件和东西(Gmail,雅虎,Hotmail等),并在这些PC上的用户权限不会允许用户杀死进程。

如果IE浏览器锁定,那种烦人的,但我能理解的推理。

听起来像是这样的一个例子

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

我同意这是一个可怕的想法

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

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

除非你真的在写病毒,否则你应该能够阻止他们用权限杀死进程的能力。 假设他们都是域用户,你是管理员。

我猜想会有几个你想要这样做的情况。 您不希望用户出现安全漏洞。 我无法在工作计算机上退出或更改诺顿端点的任何设置,但它并没有打扰我。

但是,如果所有用户都是他们机器上的管理员,并且想要使其无法关闭,并且大概不可能以安全的方式启动并删除,那么您就会问:“如何编写恶意软件?