windows服务创建工具srvany.exe介绍

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

大家好,又见面了,我是你们的朋友全栈君。

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的安装配置情况: 

windows服务创建工具srvany.exe介绍

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/144148.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 用keras搭建一个简单的一维卷积神经网络

    用keras搭建一个简单的一维卷积神经网络编程环境:python3.6.8tensorflow1.12.3点击下载离线包matplotlib3.1.2numpy1.17.4数据集说明:我所采用的数据集,是我自己构建的一个网络流量数据集,借鉴了WeiWang等人端到端的思想,但是处理成的数据集却不同于他们的MNIST型数据集,而是采用的npy进行存储。由于只是用于测试模型搭建,该数据集仅包含了一部…

  • matlab矩阵拼接

    matlab矩阵拼接matlab中矩阵拼接分为行拼接和列拼接

  • Shenzhen Catic Real Estate to raise RMB 2.2 bln

    Shenzhen Catic Real Estate to raise RMB 2.2 blnJun.5,2009ShenzhenChina-ShenzhenCaticRealEstateCoLtd<000043>announcedtodaythatitplanstoissueupto260millionsharestotwofirmsforatotalofRMB2.2billionorRMB8.94pe…

    2022年10月29日
  • js 判断是否字符串_js字符串查找

    js 判断是否字符串_js字符串查找整理js中可以用到的判断一个字符串中是否包含另外一个字符的方法String对象方法1、indexOfindexOf返回指定字符串在该字符中首次出现的位置,如果没有找到,则返回-1indexOf接收两个参数,第一是需要搜索的字符串,第二个参数是检索的位置,默认为0letstr=’abcde’;//例如,从str第三位开始搜索’a’console.log(str.indexOf(‘a’,2));//-1console.log(str.indexOf(‘a’))//02、

  • 用户名为中文软件不能用_电脑用户名打不了中文

    用户名为中文软件不能用_电脑用户名打不了中文(软件必须要求路径和用户名都是英文,比如SystemVue和MATLAB)我安装matlab也是一路坎坷,一开始每次激活成功后就自动关闭,再次打开依旧提示激活,无论是在线激活还是本地选择license文件都不行(.lic文件是从Mathwork上登录后下载下来的)。讲道理是还有一年期限,不会过期的,但是试了好久启动不了。后来发现license文件放错了位置,应该放在安装目录下,如C:\Progr…

    2022年10月14日
  • win10开机“正在准备自动修复”,且无法修复你的电脑「建议收藏」

    win10开机“正在准备自动修复”,且无法修复你的电脑「建议收藏」昨天一顿操作,先是快速启动,后来又觉得快速启动没用又关掉了,第二天过来,发现电脑开不起来了,进到里面怎么自动修复不得行,网上大多数的答案是重装,经过半天努力摸索,终于修好了,原理就不想深究了。准备:一个U盘,并且制作PE系统。1、电脑的系统启动设置在U盘启动,进入PE系统2、打开分区工具DiskGenius点硬盘点重建主引导记录MBR(一般在开始菜单都有)3、再返…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号