不间断的Windows进程

时间:2010-03-10 05:00:00

标签: vb6 windows-services service wmi

我们现在正在从客户端启动一个新的自定义项目,其中一个要求是除非系统正在关闭,重新启动或注销,否则无法终止该过程。

此应用程序监控USB接口。我们将使用WMI定期查询设备。

客户端希望在Windows XP操作系统上运行应用程序,而不喜欢安装.NET。所以我们将Visual Basic 6作为我们的语言。

我主要担心的是这个应用程序无法终止。我们的项目顾问谈论反病毒,是的,一些反病毒无法终止。我正在考虑如何在Visual Basic 6中执行相同操作。我知道项目中将涉及API,但我应该去哪里?所以API也适合我。

我看到一些文章将EXE转换为SERVICE,在Visual Basic 6中创建Windows服务等。

所以请分享你的想法。

5 个答案:

答案 0 :(得分:2)

如果你想成为邪恶,你可以调用(官方)未记录的RtlSetProcessIsCritical NTDLL函数。如果您的流程终止,这将立即BSOD机器。

答案 1 :(得分:2)

如果没有某种内核模式挂钩,你就无法创建一个无法终止的进程,这涉及到编写驱动程序。如果您对此感兴趣,可能需要查看 Rootkits:颠覆Windows内核。但是,即使使用内核模式挂钩,仍有许多方法可以终止进程。另一种方法是使用用户模式挂钩,轻松绕过,但足以用于非常简单的项目。

您要使用的解决方案取决于您希望使用终止保护的程度。即使您成功阻止了流程终止,也可能存在阻止您的应用程序正常工作的方法 - 例如杀死WMI服务。

答案 2 :(得分:0)

答案 3 :(得分:0)

现在在VB6编写真的很令人沮丧,特别是我把头放在C#中2年了,虽然我用VB6编写了5年代。

退回是一种痛苦,好像我正在开始一种新的编程语言。

答案 4 :(得分:0)

老实说,你正试图在VB6中做一些事情,它真的不是那么棒。 当你说'不能被终止'时 - 你的意思是什么?那里有几个层次: a)应用程序显示一个窗口,但用户无法使用X按钮关闭它,或者它没有显示一个窗口 b)应用程序显示没有窗口或可能位于任务托盘中 c)应用程序显示没有窗口,无法从任务管理器的“应用程序”选项卡关闭 d)无法从任务管理器的进程列表中关闭应用程序

(a)和(b)可能是直接VB中最容易做到的。 (c)仍有可能,但变得更加丑陋。 (d)让你进入黑客领域,如果你管理它,几乎肯定会被贬低。

如果你真的需要阻止用户关闭那么你可能会或多或少地破解它,但真正的答案就像其他人所说的那样 - 系统服务(这正是他们打算用的东西) )。然而,这是VB6不擅长的一件事,因此解决问题的最佳方法是c#。