基本说明
Windows系统支持将可执行程序注册成系统服务,以便在系统启动时自动运行。但是,对于一些第三方程序,可能无法直接使用系统提供的注册工具。因此,需要编写脚本或使用其他方法来实现程序的注册。
在Windows系统中,可以使用sc.exe
命令来注册服务。具体用法可以参考Windows官方文档或者使用sc.exe /?
命令获取帮助信息。
不过,可执行程序想在Windows系统中注册成服务,必须是一个Service Provider(需要包含符合Windows API的接口)。也就是说,程序必须提供一个服务提供者,以便Windows系统可以调用该提供者来启动和停止服务。
因此,本文提供了一个基于srvany-ng
的通用解决方案。
编写服务注册脚本
示例脚本regist_service.bat
如下:
@echo off
cd /d %~dp0
set serviceName=DemoService
set appName=demo.exe
sc delete %serviceName%
sc create %serviceName% binPath= %cd%\srvany-ng.exe start= auto
sc description %serviceName% "demo service"
@echo on
echo "register service success"
reg import regist.reg
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%serviceName%\Parameters" /v "Application" /t "REG_SZ" /d "%cd%\%appName%" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%serviceName%\Parameters" /v "AppDirectory" /t "REG_SZ" /d "%cd%" /f
pause
regist.reg内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DemoService\Parameters]
将regist_service.bat
、regist.reg
以及srvany-ng.exe
放在demo.exe
文件同目录下执行regist_service.bat
即可。
PS:脚本需要管理员权限才能执行,该方法适用于Windows XP
及以上版本,如果是XP
,srvany-ng
记得使用32位版本。