源码下载
介绍
通常,NT服务是控制台应用程序,它没有消息循环。不必等到用户登陆电脑,NT服务便能启动,并且在用户登出之后,它也不会停止运行。然而,许多现存的ActiveX控件很难,有时候根本不可能在控制台程序中使用。另一方面,MFC和VB程序都是Windows应用程序,所以在MFC或VB程序中使用ActiveX控件相当简单。要是能使MFC和VB程序像NT服务一样运行就不错了:
• 在用户登陆电脑之前就启动
• 在用户登出电脑之后继续运行
可以用Windows程序的形式直接写NT服务,但是本文要提供一个更简单的解决方法。本文配套源代码是一个简单的NT服务程序,它能够启动和关闭其它程序。所有你需要做的是安装这个服务,修改.ini文件。下面是使用此NT服务的好处。
• 它能够启动你指定的任意多个程序。被启动的程序将像 NT 服务一样运行(例如,不用用户登陆机器,它们便会在后台运行)。
• 在没有合适特权情况下,用户不能终止由此服务启动的程序(除非机器关闭)。
• 你可以在 NT 服务之外测试和调试你的程序。例如,你可以在 DevStudio 调试器中运行你的程序,单步进入源代码中查找错误等。当“调试无错”后,你将它配置成产品,从 NT 服务启动它。
XYNTService
XYNTService.exe是此NT服务程序可执行文件的名字。它是我研发的客户-服务器开发工具的一部分。你可以免费使用和修改本文包含的源代码。我知道也有其它的工具提供和XYNTService几乎相同的功能。然而,如你所见,XYNTService拥有更多的特性,并且更容易使用(例如,不需要编辑注册表)。下面显示了如何使用此程序。
• 为了安装(install)服务,在命令提示符下运行下面命令:XYNTService -i
• 为了卸载(un-install)服务,在命令提示符下运行下面命令:XYNTService -u
默认情况下,在电脑重启时,安装的服务便会自动启动。你也可以使用服务图标从控制面板启动和关闭服务。服务启动时,它将会一个挨一个地创建在XYNTService.ini文件中定义的所有进程。服务关闭时,它将会终止这些进程(以相反顺序)。XYNTService.ini文件应该和可执行文件放在相同的目录。下面是此文件的一个例子。
[Settings]
ServiceName = XYNTService
ProcCount = 3
CheckProcess = 30
[Process0]
CommandLine = c:\MyDir\XYRoot.exe
WorkingDir = c:\MyDir
PauseStart = 1000
PauseEnd = 1000
UserInterface = Yes
Restart = Yes
[Process1]
CommandLine = c:\MyDir\XYDataManager.exe
WorkingDir = c:\MyDir
PauseStart = 1000
PauseEnd = 1000
UserInterface = Yes
Restart = Yes
[Process2]
CommandLine= java XYRoot.XYRoot XYRootJava.ini
UserInterface = No
Restart = No