将普通应用程序制作成系统服务_Roy·Tian

来源:百度文库 编辑:神马文学网 时间:2024/05/01 18:51:10
将普通应用程序制作成系统服务
如果想让自己的应用程序在2003服务器登录前运行,除了写底层的vxd驱动外,似乎只能做成系统服务。而默认安装好的Windows 2003又没有提供制作成系统工具的服务器。如果强行修改注册表加入,很有可能启动失败。怎么办,当然是Google一下。
原来微软提供了一个名为Windows 2003 Resource Kits的包,里面有各式各样奇奇怪怪的小工具,其中有两个就是用来将普通程序变成系统服务器的。一个称为instsrv.exe,另一个唤作srvany.exe。
下面开工,先装好资源包。假设我们的程序名为chatServer.exe,我需要它成为系统服务器,在系统启动但是未登录的情况下运行……
控制台下键入命令
1
instsrv chatServer d:\chat\chatServer.exe
将其注册为系统服务,进入管理工具的服务中查看,多了一项chatServer。尝试启动,如果你能正常启动它,OK。如果启动失败,则表明我们的程序不太适应系统服务这种东西。没关系,微软提供了一个srvany.exe的东东,从名字就看得出来,它可以将任何程序变成系统服务。
1.进入注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\chatServer,把ImagePath的内容改为指向srvany.exe,如“d:\tools\srvany.exe”
2.新建Parameters项目,添加application子键,内容为应用程序的路径,如:d:\chat\chatServer.exe
3.回到进入管理工具的服务中,启动chatServer, All done。
4.别忘了将该服务器改为自启动。
如果你仍然搞不定的话,推荐一个专干这个事情的软件Firedaemon.com,咱也是失败了很多次,后来用这个软件搞定的,囧。不过公司的服务器都是Linux和FreeBSD了,哪天有钱买服务器后CoCo也把自己的服务器搞成Linux,windows的服务器实在是太不好用了……
下载上面的工具包安装后,再在 Command Shell窗口执行上述命令即可。
小知识 什么是服务
服务是一种应用程序类型,它在后台运行。要管理系统服务,请运行services.msc,打开“服务”对话窗口,这里可以看到当前系统中的所有服务。双击某一服务,在弹出的“属性”对话框的“常规”选项页中的“服务状态”栏可以看到此服务当前状态。单击“启动类型”下拉菜单,可以将该服务设置为自动启动、手动启动或禁用。
用instsrv.exe程序设置成服务启动
Windows的“服务”工具是不能添加/删除服务的,但可以利用Windows提供的资源工具包中的Instsrv.exe和Srvany.exe来实现。其中,Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行。
★设置方法
第一步:报户口——注册服务名称
这里就以建立一个名为explorer的服务为例来说明,首先将Instsrv.exe和Srvany.exe存放到一个比较方便的地方,建议放到系统安装目录中(笔者的Windows XP安装目录为D:\Windows)。运行cmd.exe,进入“命令提示符”窗口,执行命令:cd d:\Windows,进入系统安装目录。运行命令:
Instsrv explorer d:\Windows\srvany.exe
好了,这条命令的成功运行,已经在系统中注册了一个名叫explorer的服务,快到“服务”中看看一下检验检验吧!
小提示
★注册服务:instsrv :这里的可任意取名,前面必须带上该文件的绝对路径,如:D:\Windows\srvany.exe。
★删除服务:instsrv remove
第二步:找关联
要让explorer服务正常运行,还必须在注册表中指定该服务对应的应用程序。运行Regedit.exe,打开“注册表编辑器”,依次展开如下子键:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services],在该子键下找到并右击explorer(对应前面建立的服务名),选择“新建”下的“项”,将其命名为Parameters。单击选定它,在右侧窗口中新建一个名为Application的字符串值,将其数值数据设置为explorer服务对应的应用程序绝对路径,比如:d:\Windows\gboor.exe。接着再新建两个字符串值:AppDirectory和AppParameters,AppDirectory指定程序所在的目录,AppParameters指明程序运行的参数(注意:可以不用设值),如图1所示,最后关闭注册表编辑器。

接下来打开“服务”窗口,找到刚添加的explorer服务,打开其属性对话框,单击切换到“登录”选项页,在“登录身份”中选中“本地系统账户”,如图2,如果不想让服务在运行的时候弹出状态窗口,请不要勾选“允许服务与桌面交互”复选项,单击“确定”返回。至此,explorer服务已经全部配置好了。

最后,右击该服务,选择“启动”,这样该程序就会启动,而且以后也会在系统启动时自动以服务形式运行!
转自:http://yes365.blog.hexun.com/17003434_d.html
已测试。。
http://mingnostradamus.spaces.live.com/blog/cns!33A0C87F7C27E5AA!466.entry?wa=wsignin1.0&sa=304731912
http://hi.baidu.com/gimn/blog/item/95ca627e920a24300dd7da08.html