srvany_使用srvany.exe将程序安装成w
编辑: admin 2017-12-02
-
4
逆火下载站软件教程的主题为《srvany》,详细介绍怎样把任意exe程序注册成windows系统服务,让您更深入的了解srvany。
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 封装了安装服务的操作(上面有提到)。需要传入参数有服务名称,程序名称。
复制代码代码如下:
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
复制代码代码如下:
cd /d %~dp0
call run-install.bat MyService Console.exe
pause
3.run-del.bat 简单封装了卸载服务的操作,传入服务名称即可。
复制代码代码如下:
rem 参数依次为 服务名称
@echo 服务名称:%1</p> <p>rem 进入当前目录
cd /d %~dp0
rem 卸载引导服务
instsrv %1 remove
4.del.bat 命令含义:进入当前目录,调用当前目录下的run-del.bat文件,并传入参数,完成服务卸载。服务名:MyService
复制代码代码如下:
cd /d %~dp0
call run-del.bat MyService
pause
总结
1.按照以上操作即可轻松将程序添加到系统服务中去。
3.将程序部署成服务后,该程序依然可以双击启动,如果不需要,建议将程序中添加命令行参数判断来禁止双击启动该程序。
4.在服务的属性中,可以设置其与桌面进行交互,此时Window会提示交互式消息提示,点击后即可显示程序窗体。
5.如果你的程序是做成安装包,调用安装服务的批处理和调用卸载服务的批处理,则可以放在安装程序和卸载程序的时候去执行,简化用户操作。
与“srvany”的相关教程
怎样把任意exe程序注册成windows系统服务
某gae代理软件每次开机都需要手动启动,就算添加成开机启动项,在win8.1下权限的管理更加严格,开机时并不能成功启动软件(无人值守时开机),因此在网上搜索把exe注册成系统服务的办法,找到论坛两个帖子,可将代理程序注册成系统服务开机自动启动而不用每次重启系统都要手动启动程序。本经验非原创,内容来自于以上两个帖子。
操作前的准备
Instsrv.exe(可以给系统安装和删除服务)Srvany.exe(可以让程序以服务的方式运行)详细操作
要实现这个功能要用到微软提供的两个小工具“instsrv.exe”和“srvany.exe”。先下载这两个程序然后放在同一个目录,我是直接放在D盘的,然后进入到DOS命令行下面输入如下命令注册服务:
d:\instsrv.exe tjserver d:\srvany.exe //tjserver是服务名
这个命令是把srvany.exe这个程序注册成了系统服务
然后进入注册表在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下找到刚刚注册的服务名tjserver,在tjserver新建一个项,名称为“Parameters”,单击选中它然后在右侧的窗口新建一个字符串值名称为“Application”,将其值设置为你针要做为服务运行的程序的路径,例如我的路径为“D:\\tools\\tjs.exe”。这里特别要注意的是程序路径一定要写得跟前面的例子一样,也是就是中间是用双斜杠隔开,不然服务没办法自动启动。
然后可以再建立一个AppDirectory指定程序运行的初始目录(可选)。
如果你需要把自己注册的服务做得看起来更专业也更好理解的话还可以继续新建一个字符串值名称为“Description”,在其值里面你可以输入你想显示的服务描述。
还有一点特别要注意的是,如果你要做为服务运行的程序是在运行后需要界面的,我们可以在控制面板里面找到管理工具然后打开服务或者直接运行“Services.msc”命令打开服务,找到刚刚创建的服务右键打开属性,选中登陆选项卡,登陆身份选中本地系统帐户并选中允许服务与桌面交互最后点确定,这样你的服务在启动后就可以看到界面了。
删除注册的服务
先停止服务,然后用命令“d:\instsrv.exe tjserver remove”删除服务
网上还有一种和功能和instsrv.exe一样的界面操作的程序,名称为“srvinstw.exe”,只需要点点鼠标就可以完成上面的第一步,详细使用方法就不说了,很简单的。