首页 / 软件开发 / C++ / 从NT服务启动Windows程序
从NT服务启动Windows程序2010-12-22无语的风介绍通常,NT服务是控制台应用程序,它没有消息循环。不必等到用户 登陆电脑,NT服务便能启动,并且在用户登出之后,它也不会停止运行。然而, 许多现存的ActiveX控件很难,有时候根本不可能在控制台程序中使用。另一方面,MFC和VB程序都是Windows应用程序,所以在MFC或VB程序中使用 ActiveX控件相当简单。要是能使MFC和VB程序像NT服务一样运行就不错了:• 在用户登陆电脑之前就启动• 在用户登出电脑之 后继续运行可以用Windows程序的形式直接写NT服务,但是本文要提供一 个更简单的解决方法。本文配套源代码是一个简单的NT服务程序,它能够启动和 关闭其它程序。所有你需要做的是安装这个服务,修改.ini文件。下面是使用此 NT服务的好处。• 它能够启动你指定的任意多个程序。被启动的 程序将像 NT 服务一样运行(例如,不用用户登陆机器,它们便会在后台运行) 。• 在没有合适特权情况下,用户不能终止由此服务启动的程序 (除非机器关闭)。• 你可以在 NT 服务之外测试和调试你的程 序。例如,你可以在 DevStudio 调试器中运行你的程序,单步进入源代码中查 找错误等。当“调试无错”后,你将它配置成产品,从 NT 服务启动 它。XYNTServiceXYNTService.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:MyDirXYRoot.exe
WorkingDir = c:MyDir
PauseStart = 1000
PauseEnd = 1000
UserInterface = Yes
Restart = Yes
[Process1]
CommandLine = c:MyDirXYDataManager.exe
WorkingDir = c:MyDir
PauseStart = 1000
PauseEnd = 1000
UserInterface = Yes
Restart = Yes
[Process2]
CommandLine= java XYRoot.XYRoot XYRootJava.ini
UserInterface = No
Restart = No