使用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:\Windows\System32\srvany.exe
 卸载 instsrv ServiceName remove
  (ServiceName 即你自己定义的服务名称,可以是要作为系统服务启动的应用程序的名称。)

   安装完毕后,我们需要对srvany.exe进行配置,以便于能够加载我们指定的程序,配置的方法是,开始 - 运行 - regedit,打开注册表,定位到下面的路径。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName

如果该服务名下没有Parameters项目,则对服务名称项目右击新建项,名称为Parameters,然后定位到Parameters项,新建以下几个字符串值。

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

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

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

以上部分来自于 http://mazhihui.iteye.com/blog/1294431 。本文当然不会仅仅是照搬文章,最近在学习批处理,将其中的操作使用批处理来完成。

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

复制代码
@echo off

rem 参数依次为 服务名称 可执行文件名称
@echo 服务名称:%1
@echo 程序名称:%2

rem 定义需要运行的程序路径
set curExe=%~dp0%2
rem 定义注册表路径
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\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 注册表添加完成
复制代码
  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

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.如果你的程序是做成安装包,调用安装服务的批处理和调用卸载服务的批处理,则可以放在安装程序和卸载程序的时候去执行,简化用户操作。

使用srvany.exe把程序安装成windows服务相关推荐

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

    一.什么是instsrv.exe和srvany.exe instsrv.exe.exe和srvany.exe是Microsoft Windows Resource Kits工具集中 的两个实用工具,这 ...

  2. minio:安装部署并安装成windows服务

    前言 关于分布式文件存储,之前我也是使用fastdfs,那为什么突然选择minio? 1.它可以多平台部署 2.搭建起来不是很复杂 3.github近30K的star 什么是minio? 构建高性能的 ...

  3. 将应用程序安装为Windows服务

    将应用程序安装为Windows服务 安装为服务的好处:不用登陆系统就可以自动启动. 微软官方对该小工具的说明: Installs and uninstalls executable services ...

  4. Mongo数据库安装成Windows服务

    Mongo数据库安装成Windows服务 每次运行mongod --dbpath D:/MongoDB/data命令行来启动MongoDB实在是不方便, 把它作为Windows服务,这样就方便多了. ...

  5. Java的jar文件安装成windows 服务

    Java的jar文件安装成windows 服务: 1.下载:nssm,复制到jar文件目录下 2. jar文件目录下创建bat文件[run.bat],内容为[java -jar 文件名.jar] 3. ...

  6. 使用instsrv.exe和srvany.exe将应用程序安装成windows后台服务

    instsrv.exe.exe和srvany.exe是Microsoft Windows Resource Kits工具集中 的两个实用工具,这两个工具配合使用可以将任何的exe应用程序作为windo ...

  7. 用instsrv.exe+srvany.exe将应用程序安装为windows服务

    下载 链接:https://pan.baidu.com/s/1gKu_WwVo-TeWXmrGAr9qjw 提取码:s1vm 用instsrv.exe安装srvany.exe 将instsrv.exe ...

  8. C#控制台程序注册成Windows服务

    在控制台程序中新增项目-->"Windows服务" 修改名称,我这里叫"Test_WindowsService" 然后在新增的"Windows服 ...

  9. Nginx安装成Windows服务

    因为有项目使用Nginx来做负载均衡,但是Nginx的Windows版本是不提供安装成服务的,所以服务器重启后Nginx并不会伴随启动和恢复.网上查了下,这里记录下解决方法,防止遗忘. 第一步:下载W ...

  10. 将 tomcat 安装成 windows 服务(开启Tomcat后,关闭启动窗口,服务器也关了?)

    当关闭启动窗口后,服务器仍然运行. 开始:Ctrl+R,输入cmd,在命令行中: 找到 tomcat 的service.bat(在安装路径的bin目录下) 拖入到doc命令行窗口 or 在doc命令行 ...

最新文章

  1. depot用例视图建模
  2. ERP_基于Oracle SOA的企业服务总线整合
  3. euv光刻机有什么用_日本光学技术全球第一,可高端光刻机为何只有荷兰能造?...
  4. java udp传输文件_JAVA使用UDP收发文件
  5. 使用工作单元UnitOfWork实现事务
  6. sparkStreaming连接kafka整合hbase和redis
  7. linux系统层次结构_Linux文件系统层次结构问题和解答
  8. 基于深度学习的文本分类1
  9. 命中率极高的 Go 面试题,赶紧收藏!
  10. mybatis 使用in 查询时报错_不会Mybatis?一文教你手写实现Mybatis(超详细),吊打面试官!...
  11. PHP apache2.2 mysql 的安装
  12. java中int边界值_数组中重复的数字2019.12.06
  13. Java 基础 之 变量
  14. finereport 格式化金额函数_帆软报表常用函数总结
  15. 笔记本外接2K显示器
  16. 用Form 表单认证实现单点登录(Single Sign On) 作者:寒羽枫(cityhunter172)
  17. 麦客表单无法登录打开显示空白怎么办?
  18. 浏览器访问127.0.0.1已拒绝连接
  19. jme-再现虎式坦克
  20. 联想微型计算机开机黑屏什么原因,联想电脑开机后显示屏是黑屏怎么办

热门文章

  1. 排序算法之冒泡排序(图解)
  2. 基于FCM算法的聚类算法
  3. WICED™ SMART Software Development Kit
  4. 两相四线步进电机的驱动
  5. 汽车工业的行业地位和新能源汽车产业结构简述
  6. python写文件格式转换程序_有趣的python小程序——图片格式转换
  7. 存储基础知识 - 网络存储主要技术
  8. eclipse安装教程|最详细eclipse安装 配置图文教程
  9. couchbase php,CouchBase + PHP 安装与配置
  10. 九种流行木马的发现和清除