前几天搞那个邮件接口的程序,用到一个叫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,为该服务更改了启动方式,并修改描述内容。
为了方便和我有同样想法的人,干脆写了个批处理脚本,一步实现停止->删除->注册->启动的功能,包括生成注册表文件并导入。
- 脚本内容如下:
@echo off
::设置服务名称
set service_name=smtpsvr
::设置服务描述
set service_description=1st smtp server 服务
::设置服务程序路径
set prog_path=D:\\Green Programs\\fstsmtp\\smtpserver.exe
::设置服务的启动方式 auto:自动 demand:手动 disabled:禁用
set strt=auto
echo EasyService 一键服务
echo ===========================================================
::pause
::======================以下部分勿随意修改==========================
set s32=%windir%\system32
set reg_file=EasyService.reg
net stop %service_name% 2>nul
copy instsrv.exe %s32%
copy srvany.exe %s32%
%s32%\instsrv.exe %service_name% remove 2>nul
%s32%\instsrv.exe %service_name% %s32%\srvany.exe >nul
::设置服务的启动方式 auto:自动 demand:手动 disabled:禁用
sc config %service_name% start= %strt%
sc description %service_name% "%service_description%"
echo 生成注册表文件...
echo Windows Registry Editor Version 5.00 > %reg_file%
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%service_name%\Parameters] >> %reg_file%
echo "Application"="%prog_path%" >> %reg_file%
echo 导入注册表文件...
%reg_file%
net start %service_name%
echo ===========================完成============================
pause
- 使用方法:
修改脚本中service_name、service_description、prog_path、strt这4个变量的内容,分别设置为服务名、功能描述、程序路径、启动方式,保存后运行脚本,弹出是否导入注册表,选是,大功告成,已在winxp及win2k下测试通过。
- 下载:
一键服务 (32.2 KiB, 1,985 hits)
我倒..我还一直记得要搞ROBOCODE灭你呢
切, 只闻其声不见其人的家伙~
应该只要Srvany.exe就行了。SC是XP/2003自带的,SC CREATE命令可以创建服务(instsrv.exe的功能)
谢谢楼主,帮我解决了大问题。
跑这个服务的服务器正是台win2k,就把sc.exe也带上了
你好!!!我在XP上跑了你写的脚本,可是不行啊,说服务没有启动!!!我不知道哪里出问题了!!!我现在很需要这个,你能尽快和我联系吗?我的QQ是187159916!!!Email chen3152001@126.com
我在XP上试了没问题,但在windows2000 server 上怎么试都不行,我也很需要这个,谢谢。不知能否得到你的指点,谢谢。QQ:874756397
非常感谢~!
你好 为什么我的显示服务无法启动呢 我换了好多电脑了 xp系统和2003server都不行 邮箱:120@99568.com