Windows注册服务的几种方式

方式一:使用Windows自带的sc命令

1、使用管理员权限打开cmd窗口
2、注册服务命令:
sc create 服务名 binpath= 程序所在路径 type= own start= auto displayname= 服务显示名称

sc create redis binpath= d:\tools\redis--x64-5.0.14\redis-server.exe type= own start= auto displayname= redis

3、服务启动和关闭

启动服务:net start redis 或 sc start redis
停止服务:net stop redis 或 sc stop redis
删除服务:sc delete redis
查询服务详细:sc query redis

如果在services.msc启动服务报错:错误1053:服务没有及时响应启动或控制请求
则说明通过sc注册服务存在问题,可删除服务,通过其它方式注册;

说明:如果要注册的exe不符合服务的规范,此方式启动有可能会失败。

方式二:使用WinSW注册(推荐)

WinSW下载地址:
https://github.com/winsw/winsw/releases

注意:32位和64位不同系统需选择其对应的exe文件。

1、将WinSW.exe拷贝至目标文件夹;
2、配置myapp.xml文件,指定执行命令等参数;

myapp.xml配置示例如下:

<service>
  <id>jenkins</id>
  <name>Jenkins</name>
  <description>This service runs Jenkins continuous integration system.</description>
  <env name="JENKINS_HOME" value="%BASE%"/>
  <executable>java</executable>
  <arguments>-Xrs -Xmx256m -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
  <log mode="roll"></log>
</service>

说明:
(1)%BASE% 变量默认指向winsw.exe所在目录;
(2)winsw和myapp.xml名称可按照实际服务命名。

具体使用详见官方文档:https://github.com/winsw/winsw

3、服务注册/启动/关闭相关命令:

注册服务:winsw install myapp.xml
启动服务:winsw start myapp.xml
查看服务状态:winsw status myapp.xml

方式二示例:
Windows服务器上Nginx注册服务及设置开机启动
https://whwtree.com/archives/107.html

方式三:使用instsrv+srvany注册(不推荐)

由于此方式需手动修改注册表内容,故在此不做推荐。

1、将下载的instsrv.exe和srvany.exe拷贝至C:\Windows\SysWOW64目录下;
2、使用管理员权限打开cmd窗口,运行instsrv命令创建服务;

(1)cd C:\Windows\SysWOW64
(2)instsrv myService C:\Windows\SysWOW64\srvany.exe

myService为自定义服务名,可根据应用程序名称修改;
3、注册表应用参数配置;

(1)cmd输入regedit打开注册表,ctrl + f,搜索myService;
(2)右击myService新建项,名称为Parameters;之后在Parameters中新建几个字符串值:
名称Application 值:服务运行程序exe全路径
名称AppDirectory 值:服务运行程序所在文件夹路径;
名称AppParameters 值:服务启动所需的参数;

示例配置:

win-service-01.pngwin-service-01.png

创建服务及启动命令:

创建服务:instsrv smaple-ws C:\Windows\SysWOW64\srvany.exe
启动服务:net start smaple-ws
关闭服务:net stop smaple-ws

win-service-02.pngwin-service-02.png

(完)

最后修改于:2022年10月15日 00:09

添加新评论