前几天搞那个邮件接口的程序,用到一个叫1st smtp server的程序来做smtp服务器,但这个东西是不支持以服务方式运行的,又不能像java一样使用java service wrapper。Google了几个小时,看到有介绍用sc.exe注册系统服务的文章,但压根就不能用,新添加的服务怎么也启不来,有说要改注册表的,又说了半天也说不清楚。后来发动鸡肉搜索引擎,帮我找到篇比较靠谱的文章《把EXE文件注册成服务的方法》,介绍了使用Windows 2000 Resource Kit Tools中两个小程序Instsrv.exe和Srvany.exe可以达到目的,虽然找这两个程序又花了很久,但最终还是搞定了。
该文提到的步骤比较繁琐,原理大概是以Srvany.exe作为一个shell来启动其它的exe程序作为服务,Instsrv.exe是配合注册服务用的,作为服务的程序路径要记在注册表里。我在实施的时候顺便结合了一下新学习到的sc.exe,为该服务更改了启动方式,并修改描述内容。
为了方便和我有同样想法的人,干脆写了个批处理脚本,一步实现停止->删除->注册->启动的功能,包括生成注册表文件并导入。
- 脚本内容如下:
1 | @echo off |
- 使用方法:
修改脚本中service_name、service_description、prog_path、strt这4个变量的内容,分别设置为服务名、功能描述、程序路径、启动方式,保存后运行脚本,弹出是否导入注册表,选是,大功告成,已在winxp及win2k下测试通过。
- 下载:
EasyService.rar 包括了Instsrv.exe、Srvany.exe、sc.exe三个程序,是脚本运行的基础。