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

Posted zh672903

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_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

以上是关于srvany.exe和instsrv.exe打包exe为windows服务趟的坑的主要内容,如果未能解决你的问题,请参考以下文章

将BAT文件注册为服务的方法

怎么把exe做成服务

用C#写了一个控制台程序,如何让它作为服务来运行

用C#写了一个控制台程序,如何让它作为服务来运行

VMware所在主机系统开机自动启动并引导虚拟机操作系统

将exe程序注册为windows服务方法总结