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

2016-03-31 16:09 8 1 收藏

下面图老师小编要跟大家分享使用srvany.exe将程序安装成windows服务的详细教程,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - 服务器 】

使用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服务项中即可查看。

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/fuwuqi/)

批处理说明

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

 

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

总结

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/fuwuqi/)

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

来源:http://www.tulaoshi.com/n/20160331/2051942.html

延伸阅读
标签: windows 操作系统
如果Windows系统出现故障无法进入,我们通常都会利用DOS启动磁盘引导进入DOS模式,然后使用各种DOS命令对系统进行修复。不过随着Windows视窗平台的逐渐更新,DOS似乎已经开始远离人们,现不少用户对DOS命令几乎无所了解,在这样的情况下,那么只能格式化C盘重装系统了。有没有一种方法,不用进入DOS,也不用重装系统,使用界面化对系统进行...
标签: Web开发
首先要打开windows XP安装盘,点“Support Tools”,进入硬盘的Support Tools安装目录(X:\Program Files\Support Tools),找到Msicuu.exe并双击,于是就会弹出一个“windows Installer Clean Up”窗口,显示当前已安装的所有程序列表。你从中选择顽固程序,然后单击“Rmove”按钮即可卸载。如果以上方...
信使服务是Windows 2000/XP下面的一种通信服务,通过它我们可以在网上象QQ一样进行实时的交流,但和QQ不同的是信使服务不需要拥有一个号码,它只要知道对方的IP地址--如果在局域网中,只要知道对方的计算机名就可以了。我们可以利用"net send"在命令行下面发送消息,也可以通过"控制面板-管理工具-计算机管理"中的"操作"菜单里面的"所有任...
标签: windows 操作系统
  本文描述了如何安装Unix打印服务并配置支持远程行式打印机(LPR)功能的打印机。 如果您的网络中同时使用Windows 2000 Server打印服务器和UNIX打印服务器,那么,运行Windows XP Professional的计算机可能需要同时在这两种环境中执行打印操作。如需实现这一目标,您需要同时配置UNIX打印服务和Microsoft Windows打印服务。 ...
标签: PHP
转自:http://edu.mycodes.net/html/2006-04/235.shtml 有时候,我们需要在WINDOWS服务器中安装多个不同版本的PHP环境,或采用不同的PHP.ini配置,例如在使用中国E商务网的IONCUBE系统对PHP程序进行加密后,要在PHP.ini中设置加载选项目,但这个选项和zend加密程序解释器不能同时存在,如果在服务器中有另外程序采用ZEND加密的话,...

经验教程

912

收藏

93
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部