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

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

批处理说明

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

复制代码

代码如下:


@echo off
rem 参数依次为 服务名称 可执行文件名称
@echo 服务名称:%1
@echo 程序名称:%2</p> <p>rem 定义需要运行的程序路径
set curExe=%~dp0%2
rem 定义注册表路径
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\
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.如果你的程序是做成安装包,调用安装服务的批处理和调用卸载服务的批处理,则可以放在安装程序和卸载程序的时候去执行,简化用户操作。

windows服务创建工具srvany.exe介绍相关推荐

  1. Windows服务创建及安装

    Windows服务创建及安装 原文:Windows服务创建及安装 我们将研究如何创建一个作为Windows服务的应用程序.内容包含什么是Windows服务,如何创建.安装和调试它们.会用到System ...

  2. windows服务创建

    1.创建服务类型项目 2.选择服务类service1.cs ,打开服务视图, 在视图中右键选择[添加安装程序],系统自动添加 ServiceInstaller及ServiceProcessInstal ...

  3. windows恶意软件删除工具(MRT.exe)检查计算机是否感染病毒使用图解

    Microsoft Windows恶意软件删除工具可以检查运行 Windows XP.Windows 2000 和 Windows Server 2003 的计算机是否受到特殊.流行的恶意软件(包括 ...

  4. 使用批处理修改Floppy image - 免费小工具EXTRACT.EXE介绍

    最近遇到一个问题,需要用批处理生成img文件,本来有WinImage可以用的,不过是收费软件,折腾起来比较麻烦,后来找到EXTRACT.EXE解决问题. WinImage网站提供一个免费的小工具EXT ...

  5. windows服务编程 注册InstallUtil.exe

    dos命令下输入; C:\Windows\Microsoft.Net\Framework\v2.0.to727>InstallUtil.exe E:\Test\WindowsServiec1.e ...

  6. 码流分析工具ffprobe.exe介绍

    http://blog.csdn.net/stone_wzf/article/details/45378759 '-L'    显示 license '-h, -?, -help, --help [a ...

  7. (转)创建Windows服务(Windows Services)N种方式总结

    转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在 ...

  8. 演练:在组件设计器中创建 Windows 服务应用程序

    http://msdn.microsoft.com/zh-cn/library/zt39148a(v=vs.80).aspx 演练:在组件设计器中创建 Windows 服务应用程序 .NET Fram ...

  9. 使用.NET Core创建Windows服务(一) - 使用官方推荐方式

    原文:Creating Windows Services In .NET Core – Part 1 – The "Microsoft" Way 创建Windows服务来运行批处理 ...

  10. linux自动启动network服务,Windows/Linux 创建开机启动服务

    系统服务是一种应用程序类型,它在后台运行.服务应用程序通常可以在本地和通过网络为用户提供一些功能.有些软件无需安装解压就能使用,或者在安装时未向系统注册服务.如果我们需要开机启动,需要手动创建服务. ...

最新文章

  1. nginx代理多个flask
  2. java:方法覆盖与方法重载
  3. github bilibili
  4. ESP8266 SD卡FTP库测试报告、D1miniESP8266 SD卡FTP测试
  5. Prism4文档翻译(第四章 第一部分) 转载bluesky234
  6. 全球酒店详情查看API接口-基于极核数据
  7. ibatis(2)ibatis是什么
  8. loop和[bx]的联合应用
  9. jenkins未授权访问漏洞记录(端口:7001,80,8080,50000)
  10. 618电商大促 到底谁家赢了?大家都这么有钱的吗?
  11. 又一版A+B [2008年浙江大学计算机及软件工程研究生机试真题]
  12. liunx 加入域控_[整理篇]linux加入windows域之完美方案
  13. FISCO BCOS(三)——— 部署及调用HelloWorld合约
  14. Android应用神器:高级终端Termux
  15. 基于Tomcat + JNDI + ActiveMQ实现JMS的点对点消息传送
  16. 【无人机学习】惯性导航系统简介
  17. Lecture 2 Asymptotic Notation
  18. vue开发app端使用H5+下载文件流
  19. 智能科学毕业设计题目汇总
  20. 腾讯云服务器入门使用流程 新手必看教程

热门文章

  1. Handler native层实现原理
  2. 四元数与欧拉角(RPY角)的相互转换
  3. Free Pascal初次体验(有亮点哦)
  4. linux rs 485应用程序,Linux 的 RS485 通信协议.pdf
  5. macOS和Linux系统中的虚拟网卡(xFsRedir虚拟局域网功能扩展之其他平台的实现)
  6. applyTo、renderTo 区别
  7. 有道词典笔3新增功能扫读和点读是怎么集成的?
  8. 如何快速从入门到精通linux
  9. python100内的质数_python输出100以内的质数与合数
  10. Deepin深度操作系统安装 索尼Eye Toy摄像头,教程