使用srvany.exe将程序安装成windows服务的详细教程

srvany.exe介绍 

srvany.exe是Microsoft Windows
Resource
Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行。也就是说srvany只是其注册程序的服务外壳,这个特性对于我们
来说非常实用,我们可以通过它让我们的程序以SYSTEM账户启动,或者实现随机器启动而自启动,也可以隐藏不必要的窗口,比如说控制台窗口等等。 

资源下载 

你可以通过下载并安装Microsoft
Windows Resource Kits
获得或者直接在本文下载。 

示例中的控制台程序仅仅是向当前路径不停的写入时间。 

srvany 打包下载地址 测试程序,测试程序(含控制台项目) 

如何使用 

当你获取到srvany后并决定将某程序作为服务启动后,请先将srvany安装为系统服务,具体的安装方法有很多,这里使用instsrv,语法如下: 

安装 instsrv
ServiceName C:WindowsSystem32srvany.exe 
卸载 instsrv ServiceName
remove 

(ServiceName
即你自己定义的服务名称,可以是要作为系统服务启动的应用程序的名称。) 


装完毕后,我们需要对srvany.exe进行配置,以便于能够加载我们指定的程序,配置的方法是,开始 - 运行 -
regedit,打开注册表,定位到下面的路径。HKEY_LOCAL_MACHINESYSTEMCurrentControlSet
ServicesServiceName 
如果该服务名下没有Parameters项目,则对服务名称项目右击新建项,名称为Parameters,然后定位到Parameters项,新建以下几个字符串值。 

名称
Application 值为你要作为服务运行的程序地址。 
名称 AppDirectory
值为你要作为服务运行的程序所在文件夹路径。 
名称 AppParameters
值为你要作为服务运行的程序启动所需要的参数。 

比如这里是个配置实例,我们这里配置的服务名称是MyService,下面是MyService的安装配置情况: 



至此,MyService已经安装成windows服务了,在Window服务项中即可查看。

本文当然不会仅仅是照搬文章,最近在学习批处理,将其中的操作使用批处理来完成。

批处理说明

  1. run-install.bat 封装了安装服务的操作(上面有提到)。需要传入参数有服务名称,程序名称。

复制代码
代码如下:

@echo off
rem 参数依次为 服务名称
可执行文件名称
@echo 服务名称:%1
@echo 程序名称:%2</p> <p>rem
定义需要运行的程序路径
set curExe=%~dp0%2
rem 定义注册表路径
set
regpath=HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMyServiceParameters
rem
定义srvany.exe文件路径
set sourcePath=%~dp0srvany.exe</p> <p>rem
进入当前目录
cd /d "%~dp0"
rem 安装引导服务
instsrv %1 "%sourcePath%"
@echo
服务添加完成</p> <p>rem 添加注册表语法: reg add 注册表路径 /v 项名称 /t 值类型 /d 数据 /f
表示强行修改不提示</p> <p>rem 名称 Application 值为你要作为服务运行的程序地址
/d对应的参数有斜杠不是为了转义引号,而是路径还有斜杠,默认将引号转义了,额外添加斜杠是为了保留引号
reg add %regpath% /v
AppDirectory /t REG_SZ /d "%~dp0" /f</p> <p>rem 名称 AppDirectory
值为你要作为服务运行的程序所在文件夹路径
reg add %regpath% /v Application /t REG_SZ /d "%curExe%"
/f </p> <p>rem 名称 AppParameters 值为你要作为服务运行的程序启动所需要的参数
reg add
%regpath% /v AppParameters /t REG_SZ /f
@echo 注册表添加完成

2.install.bat
命令含义:进入当前目录,调用当前目录下的run-install.bat文件,并传入参数,完成服务安装。服务名:MyService
执行程序:Console.exe

复制代码
代码如下:

@echo off
cd /d %~dp0
call
run-install.bat MyService Console.exe
pause

3.run-del.bat 简单封装了卸载服务的操作,传入服务名称即可。

复制代码
代码如下:

@echo off
rem 参数依次为 服务名称
@echo
服务名称:%1</p> <p>rem 进入当前目录
cd /d %~dp0
rem 卸载引导服务
instsrv %1
remove

4.del.bat 命令含义:进入当前目录,调用当前目录下的run-del.bat文件,并传入参数,完成服务卸载。服务名:MyService

复制代码
代码如下:

@echo off
cd /d %~dp0
call
run-del.bat MyService
pause

总结

  1.按照以上操作即可轻松将程序添加到系统服务中去。
2.使用场景为,该程序需要开机启动,而且是在Window未登录的情况下。(常规的开机启动应用程序需要输入机器用户名、密码进入到桌面后才启动)
3.将程序部署成服务后,该程序依然可以双击启动,如果不需要,建议将程序中添加命令行参数判断来禁止双击启动该程序。
4.在服务的属性中,可以设置其与桌面进行交互,此时Window会提示交互式消息提示,点击后即可显示程序窗体。
  
5.如果你的程序是做成安装包,调用安装服务的批处理和调用卸载服务的批处理,则可以放在安装程序和卸载程序的时候去执行,简化用户操作。

时间: 2024-12-14 18:46:29

使用srvany.exe将程序安装成windows服务的详细教程的相关文章

使用instsrv.exe+srvany.exe将应用程序安装为windows服务[转]

转自:http://qingmu.blog.51cto.com/4571483/1248649 一.什么是instsrv.exe和srvany.exe instsrv.exe.exe和srvany.exe是Microsoft Windows Resource Kits工具集中 的两个实用工具,这两个工具配合使用可以将任何的exe应用程序作为window服务运行.srany.exe是注册程序的服务外壳,可以通过它让应用程序以system账号启动,可以使应用程序作为windows的服务随机器启动而自

【先定一个小目标】Redis 安装成windows服务-开机自启

1.第一步安装成windows服务的,开机自启动 redis-server --service-install redis.windows.conf 2.启动\关闭 redis-server --service-start redis-server --service-stop 3.可安装多个实例 redis-server --service-install –service-name redisService1 –port 10001 redis-server --service-start

使用Java Service Wrapper将jar包安装成Windows服务

在windows上运行jar包,需要在工作目录下使用命令行运行jar包,这样会出现一个命令行窗口.而且这个命令行窗口有可能会不小心被关闭,且服务器启动后需要人为去点击开启. 对于有些服务性的程序来说,我们需要将其部署为windows服务,在系统启动的时候自动启动. 前面我使用了yajsw来进行,请参考我的博文:http://www.cnblogs.com/kxxx/p/6744309.html 但本次在另外一台服务器上进行处理时,安装了服务之后不能打开,服务每次都报找不到指定文件的错误,试了很久

Java Service Wrapper将jar包安装成Windows服务

刚接触java,第一次使用Java开发windows服务,也是刚不久看了SSM框架 简直也是一头雾水,不过只要用心理解,其实很简单,下面有详细的步骤,包学包会 在windows上运行jar包,需要在工作目录下使用命令行运行jar包,这样会出现一个命令行窗口 而且这个命令行窗口有可能会不小心被关闭,且服务器启动后需要人为去点击开启 对于有些服务性的程序来说,我们需要将其部署为windows服务,在系统启动的时候自动启动 后来研究了两种方式: 1.使用 JavaService.exe 安装jar包

用 nssm 把 Nginx 安装成 Windows 服务方法

总之:用 nssm 比 srvany.exe 简便多了. 1. 下载nginx windows版本:http://nginx.org/ 2. 下载 nssm :http://nssm.cc/ 3. 安装Nginx下载解压到一个目录,nssm下载后解压相应版本(32/64)到一个目录.然后安装服务:nssm install N1 "D:\N1\nginx.exe" 即可安装成功最基本的服务,不过启动的是nssm,让后由nssm启动nginx. 现在就可以通过控制面板->管理员工具-

将 tomcat 安装成 windows 服务

1.下载 tomcat 的windows 压缩包,一般以 .zip ,而且文件名中有 bin 的文件就是 2.解压下载的文件到某一个目录下,eg: TOMCAT_HOME 3.打开 cmd ,运行 %TOMCAT_HOME%/bin/service.bat install 即可将 tomcat 安装成为 windows 服务 4.服务管理窗口(开始 -> 运行 -> cmd ->  services.msc ),找到 apache tomcat 服务(可以在 service.bat 中重

将bat文件或exe程序注册成windows服务

命令行使用sc命令.关于sc命令的详解,请自行查看帮助(sc /?),在此只简单提及如何加入系统服务功能.加入服务:sc create ServiceName binPath= 路径 start= auto(等号后面的空格必须)删除服务:sc delete ServiceName例一:将Tomcat加入到系统服务中:sc create Tomcat binPath= F:/apache-tomcat/bin/startup.bat start= auto将Tomcat服务删除:sc delete

部署Redis 成windows服务

Redis是可以安装成windows服务的,开机自启动,命令如下: redis-server --service-install redis.windows.conf 安装完之后,就可看到Redis已经作为windows服务了: 但是安装好之后,Redis并没有启动,启动命令如下: redis-server --service-start 停止命令: redis-server --service-stop 还可以安装多个实例 1.redis-server --service-install –s

将python的程序包装成windows下的service

使用python编写的脚本应用程序,在运行的时候需要有python的运行环境,但是我们肯定是希望整个python程序能够像应用程序一样打包生成一个包括其运行环境的exe文件包,这是第一步,但是要想使用net start这样的方式启动, 还需要将该exe注册到服务里面去,使用exe install完成. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #SmallestService.py