srvany.exe和instsrv.exe打包exe为windows服务趟的坑

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_MACHINESYSTEMCurrentControlSetServices你的服务名称Parameters
rem 定义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_MACHINESYSTEMCurrentControlSetServices你的服务名称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
原文地址:https://www.cnblogs.com/zh672903/p/10981931.html