srvany.exe和instsrv.exe打包exe为windows服务趟的坑
前言
srvany.exe可用于将任何EXE程序作为Windows服务运行。我们可以通过它让我们的程序以SYSTEM账户启动,或者实现随机器启动而自启动,也可以隐藏不必要的窗口,比如说控制台窗口等等。其它废话就不多说了,直接进入正题:
部分资源文件来源:https://www.cr173.com/soft/64394.html
可下载的程序:
1、instsrv.exe
2、srvany.exe
安装服务批处理文件
install.bat
@echo off
cd /d %~dp0
call run-install.bat 你的服务名称 你要做成服务的可执行文件.exe
pause
run-install.bat
@echo off
rem 参数依次为 服务名称 可执行文件名称
@echo 服务名称:%1
@echo 程序名称:%2
rem 定义需要运行的程序路径
set curExe=%~dp0%2
rem 定义注册表路径
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\你的服务名称\Parametersrem 定义srvany.exe文件路径
set sourcePath=%~dp0srvany.exe
rem 进入当前目录
cd /d "%~dp0"
rem 安装引导服务
instsrv %1 "%sourcePath%"
@echo 服务添加完成
rem 添加注册表语法: reg add 注册表路径 /v 项名称 /t 值类型 /d 数据 /f 表示强行修改不提示
rem 名称 Application 值为你要作为服务运行的程序地址 /d对应的参数有斜杠不是为了转义引号,而是路径还有斜杠,默认将引号转义了,额外添加斜杠是为了保留引号
reg add %regpath% /v AppDirectory /t REG_SZ /d "%~dp0\" /f
rem 名称 AppDirectory 值为你要作为服务运行的程序所在文件夹路径
reg add %regpath% /v Application /t REG_SZ /d "%curExe%" /f
rem 名称 AppParameters 值为你要作为服务运行的程序启动所需要的参数
reg add %regpath% /v AppParameters /t REG_SZ /f
@echo 注册表添加完成
注意* 坑来了,单看install.bat文件,你可能只注意要改“你的服务名称”和“你要做成服务的可执行文件.exe”,但是光改这两个地方是不行的,还要改run-install.bat里面的 set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\你的服务名称\Parameters\ 这一行里面的“你的服务名称”。
删除服务批处理文件
del.bat
@echo off
cd /d %~dp0
call run-del.bat 你的服务名称
pause
run-del.bat
@echo off
rem 参数依次为 你的服务名称
@echo 你的服务名称:%1
rem 进入当前目录
cd /d %~dp0
rem 停止服务
net stop %1
rem 卸载引导服务
instsrv %1 remove