Windows下添加服务的几种办法
Tags: OSservices.mscWindows 11服务
简介
打开服务命令:services.msc
方法1:通过Windows自带的sc命令来创建服务
WIN + R 打开运行窗口,输入cmd,需要使用管理员权限打开:
1 2 3 4 5 6 7 | sc create mysql57303307 binpath= "D:\mysql-5.7.30-winx64\bin\mysqld --defaults-file=D:\mysql-5.7.30-winx64\data57303307\mysql57303307.ini mysql57303307" start= auto displayname= "mysql57303307" sc delete mysql57303307 sc start mysql57303307 sc stop mysql57303307 sc query mysql57303307 sc qc mysql57303307 |
注意:
1、“binpath=
”的等号后必须要有空格
2、简单bat脚本配置为Windows服务
1 | sc create ncat3 binpath= "f:\ncat_start.bat" |
3、若有双引号,则需要进行转义
1 2 3 | sc create ncat1 binpath= "f:\service\ncat.exe -c \"ncat 192.168.8.8 22\" -l 7777 -k" sc start ncat1 sc delete ncat1 |
binpath:你的应用程序所在的路径。
displayname:服务显示的名称
示例
1、编写服务的bat文件
1 2 3 4 5 | @echo off C: cd C:\TeldAPP\Monitor\windows_exporter C:\TeldAPP\Monitor\windows_exporter\windows_exporter-0.16.0-386.exe --config.file=C:\TeldAPP\Monitor\windows_exporter\config.yml cmd |
2、sc命令进行注册
1 | sc create windows_exporter binPath= C:\TeldAPP\Monitor\windows_exporter\windows_exporter.bat start= auto |
方法2:使用instsrv+srvany
使用sc命令,如果你的exe不符合服务的规范,启动有可能会失败,报错“错误1053 服务没有及时响应启动或控制请求”
在这种情况下,我们可以使用instsrv+srvany
什么是instsrv+srvany???
instsrv.exe.exe和srvany.exe是Microsoft Windows Resource Kits工具集中 的两个实用工具,这两个工具配合使用可以将任何的exe应用程序作为window服务运行。
srany.exe是注册程序的服务外壳,可以通过它让应用程序以system账号启动,可以使应用程序作为windows的服务随机器启动而自动启动,从而隐藏不必要的窗口
下载1:
1 2 | 链接:https://pan.baidu.com/s/1VaOYgr90c9Qdic-0tEwWsw 提取码:abv5 |
下载2:
1 2 | 链接:https://pan.baidu.com/s/1gKu_WwVo-TeWXmrGAr9qjw 提取码:s1vm |
将下载好了两个文件放在一个路径下比如“E:\serviceTools\”下,然后用管理员身份运行“命令提示符”cmd工具,在命令符工具里输入如下的命令:
1 2 | 模式:全路径\instsrv.exe 服务名 全路径\srvany.exe 示例:E:\serviceTools\instsrv.exe tomcat9Service1 E:\serviceTools\srvany.exe |
最后用“注册表编辑器”将服务替换为自己需要的功能。
使用Windows键 + R键打开运行窗口,输入“regedit”,然后回车,打开regedit注册表编辑器
6.在左边的目录中找到以下路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tomcat9Service1
7.鼠标右击tomcat9Service1,新建一个"项",名称为"Parameters" 。
8.右击"Parameters",创建一个"字符串值",名称为"Application",数值数据里填写你要执行的程序的完整路径。如:G:\software\apache-tomcat-9.0.41\bin\tomcat9.exe
9.再右击"Parameters",创建一个"字符串值",名为AppDirectory,数值数据里填写程序所在的上级目录。如:G:\software\apache-tomcat-9.0.41\bin\
修改完注册表后,修改服务设置
1.使用Windows键 + R键打开运行窗口,输入“services.msc”,然后回车,打开服务面板,在“名称”里面找到刚才添加的服务“tomcat9Service1”,鼠标右键属性。
2.切换到“常规”标签页里,可以设置服务的启动类型,“自动”指的是开机自动启动,手动指的是需要手动起服务,为了方便,我们就在电脑开机时,自动启动服务好啦。
3.切换到“登陆”标签页里,如果服务需要与用户进行交互,则勾选本地系统账户,"允许服务与桌面交互"。
4.切换到“恢复”标签页里,选择第一次,第二次,后续服务启动失败后“重新启动服务”,点击“应用”
6.在属性的“登陆”标签页里,默认使用的是“此账户”,如果不修改,服务可能会无法启动,报错“windows无法启动服务【位于本计算机上】错误5:拒绝访问”。解决办法就是使用“本地系统账户”,或者修改“此账户”里的用户名,使用“此账户”修改用户名教程如下:
bat脚本直接创建示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | @echo off echo 获取Administrator权限 cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nul if %errorlevel%==0 goto Admin if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs" echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs" echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%\getadmin.vbs" echo WScript.Quit >>"%temp%\getadmin.vbs" "%temp%\getadmin.vbs" /f if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs" exit :Admin echo 成功取得Administrator权限 F:\serviceTools\instsrv.exe ncat6 F:\serviceTools\srvany.exe reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ncat6\Parameters reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ncat6\Parameters /v AppDirectory /d "F:\serviceTools" /t reg_sz /f reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ncat6\Parameters /v Application /d "F:\serviceTools\ncat_start.bat" /t reg_sz /f |
示例2
1 2 3 4 5 6 7 8 9 10 11 12 | @echo off title="安装ncat转发服务" set n2ndir=%~dp0 set /p parameters=<%n2ndir%p.txt sc stop ncat2 & sc delete ncat2 sc create ncat2 displayname= "ncat2" binpath= "%n2ndir%srvany.exe" start= auto sc description ncat2 "ncat 转发Service" reg add HKLM\SYSTEM\CurrentControlSet\Services\ncat2\Parameters /v AppDirectory /t REG_SZ /d %n2ndir% /f reg add HKLM\SYSTEM\CurrentControlSet\Services\ncat2\Parameters /v Application /t REG_SZ /d %n2ndir%ncat.exe /f reg add HKLM\SYSTEM\CurrentControlSet\Services\ncat2\Parameters /v AppParameters /t REG_SZ /d "%parameters%" /f sc start ncat2 pause |
其中p.txt直接书写参数内容即可,对于双引号需要进行转义,如下:
1 -c \"ncat 192.168.8.8 22\" -l 7777 -k
注册表位置“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
”
方法3:使用WinSW程序
GitHub地址:https://github.com/winsw/winsw
下载WinSW.exe程序,然后编辑xml文件,注意这里的文件名必须是“WinSW.xml
”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <service> <id>ncat</id> <name>ncat</name> <description>This service runs ncat.</description> <executable>f:\service\ncat.exe</executable> <arguments>--sh-exec "ncat 192.168.8.8 22" -l 7777 --keep-open</arguments> <log mode="roll"></log> </service> <service> <id>ncat</id> <name>ncat</name> <description>This service runs ncat.</description> <executable>f:\ncat_start.bat</executable> <arguments></arguments> <log mode="roll"></log> </service> |
最后创建服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | D:\Program Files\WinSW>dir 驱动器 D 中的卷是 程序盘 卷的序列号是 9C9A-24D6 D:\Program Files\WinSW 的目录 2022/10/31 17:41 <DIR> . 2022/10/31 17:32 <DIR> .. 2022/10/31 17:28 17,462,251 winsw.exe 2022/10/31 17:43 233 WinSW.xml 3 个文件 17,463,067 字节 2 个目录 77,433,896,960 可用字节 D:\Program Files\WinSW>winsw.exe install 2022-10-31 17:43:48,217 INFO - Installing service 'wsl21 (wsl21)'... 2022-10-31 17:43:48,258 INFO - Service 'wsl21 (wsl21)' was installed successfully. D:\Program Files\WinSW> D:\Program Files\WinSW>winsw start 2022-10-31 17:45:20,935 INFO - Starting service 'wsl21 (wsl21)'... 2022-10-31 17:45:21,493 INFO - Service 'wsl21 (wsl21)' started successfully. |
WinSW命令
命令 | 描述 |
---|---|
install | 安装服务 |
uninstall | 卸载服务 |
start | 启动服务 |
stop | 停止服务 |
restart | 重启服务 |
status | 检查服务状态 |
refresh | 刷新服务属性而不是重新安装 |
customize | -- |
powershell后台运行
请参考:https://www.xmmup.com/windowstongguocmdhoutaiyunxingjinchengdefangfa.html