首页 > 系统相关 >Windows中实现将bat或exe文件作为服务_且实现命令行安装、配置、启动、删除服务

Windows中实现将bat或exe文件作为服务_且实现命令行安装、配置、启动、删除服务

时间:2024-05-22 22:56:09浏览次数:13  
标签:nssm bat exe 服务 NSSM Windows sc

一、背景描述
在Windows环境下进行日常的项目开发过程中,有时候需要将bat文件或exe文件程序注册为Windows的服务实现开机自己运行(没有用户登陆,服务在开机后也可以照常运行)、且对于那些没有用户交互界面的exe程序来说只要在后台运行即可,无需在桌面显示该exe程序窗口内容、无需用户手动打开,还可以防止用户不小心关闭该程序。

二、微软官方的SC命令
由于使用微软默认的sc命令启动服务可能会出现【[SC] StartService 失败 1053:服务没有及时响应启动或控制请求。】错误,因此我这里选用Nssm服务封装工具来实现对bat或exe文件作为服务。

SC、NET命令说明
序号 SC命令 SC命令说明
1
语法:【sc create 服务名称 start= auto binpath= "需作为服务的文件路径和文件名称" displayname= "在服务管理器上显示的服务名称"】

示例:将E:\SC、NET命令测试\Debug路径下的Test_MontiorSCADAConnNumber.exe程序设置为自动启动且名为testexe服务

(sc create testexe start= auto binpath= "E:\SC、NET命令测试\Debug\Test_MontiorSCADAConnNumber.exe" displayname= "测试可执行程序作为服务")

创建服务

2
语法:【sc config 服务名 start=AUTO】

示例:将testexe服务设置为自动启动

(sc config testexe start=AUTO)

设置服务的启动方式
3
语法:【sc start 服务名】 或【net start 服务名】

示例:启动testexe服务

(sc start testexe)或(net start testexe)

启动服务
4
语法:【sc pause 服务名】 或【net pause 服务名】

示例:暂停testexe服务

(sc pause testexe)或(net pause testexe)

暂停服务
5
语法:【sc delete 服务名】 或【net delete 服务名】

示例:删除testexe服务

(sc delete testexe)或(net delete testexe)

删除服务
sc.exe create | Microsoft Learn
sc.exe create 命令的参考文章,该命令为注册表和服务控制管理器数据库中的服务创建子项和条目。
https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/sc-create
使用 SC 配置服务 - Win32 apps | Microsoft Learn
Windows SDK 包含命令行实用工具(Sc.exe),可用于查询或修改已安装服务的数据库。 其命令对应于 SCM 提供的函数。 语法如下所示。
https://learn.microsoft.com/zh-CN/windows/win32/services/configuring-a-service-using-sc
操作系统的 Net 命令 - Windows Server | Microsoft Learn
提供有关操作系统上的 Net 命令的一些信息。
https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/networking/net-commands-on-operating-systems
查看SC命令的语法内容是【打开CMD窗口输入sc】即可,如下图所示:

 

三、NSSM服务封装工具
3.1、NSSM简介
NSSM是Windows环境下一款免安装的服务管理软件,它可以将bat文件或者exe应用程序封装成服务,封装后的服务可以设置自动启动等操作;并且可以监控程序运行状态,程序异常中断后自动启动,实现守护进程的功能;不仅支持图形界面操作,也完全支持命令行设置。同类型的工具还有微软自己的srvany;不过NSSM更加简单易用,并且功能强大。

NSSM - the Non-Sucking Service Manager
https://nssm.cc/
NSSM下载界面
https://nssm.cc/download
下载nssm-2.24.zip
https://nssm.cc/release/nssm-2.24.zip


3.2、将bat或exe文件封装为服务
将下载好的NSSM 2.24解压;根据自己的操作系统位数选择对应的NSSM,比如我这里的操作系统是64位的就选择使用win64文件夹里面的NSSM程序,如下图所示:

 

NSSM封装服务的命令
序号 NSSM封装bat或exe文件为服务的命令 说明
1 nssm install 创建封装bat或exe文件为服务的命令,且打开可操作的界面命令方便选择需要封装为服务的文件
2 nssm install 服务名称 "需封装的bat或exe文件路径和名称"
直接对需要封装的bat或exe文件进行创建服务

比如:我需要将【E:\SC、NET命令测试\重启Default Web Site.bat】文件创建名为【testbatservice】的服务命令为【nssm install testbatservice "E:\SC、NET命令测试\重启Default Web Site.bat"】

3 nssm start 服务名称
启动指定的服务

比如:【nssm start testbatservice】

4 nssm pause 服务名称
暂停服务

比如:【nssm pause testbatservice】

5 nssm restart 服务名称
重启服务

比如:【nssm restart testbatservice】

6 nssm stop 服务名称
停止服务

比如:【nssm stop testbatservice】

7 nssm remove 服务名称
删除服务

比如:【nssm remove testbatservice】

NSSM服务封装工具的完整命令行内容
https://nssm.cc/commands

①必须使用超级管理员打开命令行(CMD)界面,否则启动服务的时候会失败。

 

②进入NSSM程序路径(比如:我这里的NSSM路径是:【E:\迅雷下载\nssm-2.24\win64】)

--比如:我这里的NSSM路径是【E:\迅雷下载\nssm-2.24\win64】,那么我进入该路径的操作如下:
E:
cd E:\迅雷下载\nssm-2.24\win64

③打开NSSM的窗体安装bat文件作为服务

 

 

④启动我们刚才创建的服务(比如我这里刚创建的服务名是:testbatservice)

 

⑤重启服务 (比如我这里刚创建的服务名是:testbatservice)

 

⑥停止服务(比如我这里刚创建的服务名是:testbatservice)

 

⑦移除服务


————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/xiaochenXIHUA/article/details/133411829

标签:nssm,bat,exe,服务,NSSM,Windows,sc
From: https://www.cnblogs.com/webenh/p/18207319

相关文章

  • Langchain Plan-And-Execute框架使用
    代码示例:可以调用自定义工具函数importosos.environ['OpenAI_API_KEY']='sk-piAxxxx替换你的xxxU7F5Zrc'os.environ['SERPAPI_API_KEY']='950fbd942ee77替换你的xxx37b'#设置OpenAI网站和SerpApi网站提供的API密钥fromdotenvimportload_dotenv#用于加......
  • Windows 上 sentry-native v0.7.2 版本的使用
    在我建议sentry-native社区添加contetn:gzip功能,并提交了一个PR帮助他们完成后,终于在v0.7.2中添加了该功能https://github.com/getsentry/sentry-native/releases/tag/0.7.2 不过实际中使用与旧版本存在一些差距,主要在于zlib库的引用,所以记录下差异的地方和解决的......
  • MyBatis-plus 自动生成 条件构造器 QueryWrapper
    背景在使用Wrapper构建条件时,经常因为需要构建的条件过多需要写半个多小时,还容易粗心写错字段,所以就想搞个可以直接自动构建QueryWrapper的工具类。思路我们需要一个方法,能够根据条件参数对象的属性值来设置QueryWrapper的条件,同时需要返回一个我们所需要对应范型的QueryWrappe......
  • windows server2019远程桌面授权许可证过期解决办法
     导致此现象的原因为服务器配置了多用户登录,在没授权的情况下,默认只能使用120天,之后远程连接时就会出现此报错,解决方法如下:删除注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\RCM\GracePeriod然后重启服务器注:注册表项可能无法删除,需要修改......
  • Windows那些MSC命令
    MicrosoftManagementConsole(MMC)是一个用于创建、保存和打开管理工具的应用程序。其中.msc是MicrosoftManagementConsole(MMC)Snap-in控制文件的扩展名。.msc文件是MMC控制台文件,这些文件通常包含一组特定的管理工具。在Windows中,可以通过运行以下.msc命令来......
  • ACM/XCPC对拍(Linux/Windows)
    前言心血来潮,整理一手c++对拍,分别是Linux下的脚本对拍和windows下的代码对拍windows对拍windows下的对拍总共三个文件分别是正解(ok.cpp)错解(bad.cpp)和对拍生成数据的文件,对拍的时候只需要运行生成数据文件(beat.cpp)即可。下面给出三个文件示例代码正解示例代码:ok.cpp#include<......
  • windows基本实用命令
    文件操作dir:查看当前目录下的文件,查看隐藏文件dir/atree:使用树形查看当前目录下的文件和文件夹,以及子目录中的文件和文件夹cd目录名:进入指定目录type文件名:查看文件内容del文件名:删除文件mkdir目录名:创建文件夹rmdir目录名:删除文件夹copy文件名/目录名文......
  • Sql Server触发器调用exe控制台程序
    SqlServer触发器调用exe程序先在SqlServer中添加启动,需要手动启动(我用的是2019)--启用xp_cmdshellEXECsp_configure'showadvancedoptions',1RECONFIGUREEXECsp_configure'xp_cmdshell',1RECONFIGURE---执行过程EXECxp_cmdshell'D:\bin\Debug\net8.0\......
  • 微软推出新款AI电脑 CEO纳德拉:Windows与Mac真正的对决
    美国当地时间周一,微软推出了名为Copilot+PC(国内为Windows11AIPC)的全新AI电脑类别,微软CEO纳德拉在接受采访时称,这将重新点燃与苹果Mac之间的竞争。纳德拉表示:“苹果在多个方面都表现得极为出色,我们现在正期待Windows与Mac能够重新展开真正意义上的对决。”微软声称,无论是Surf......
  • 在 Windows 上运行,如何以管理员身份运行你的命令提示符或 PowerShell
    在Windows上以管理员身份运行命令提示符或PowerShell是非常简单的过程。以下是具体步骤:以管理员身份运行命令提示符:在开始菜单搜索框中输入cmd,然后从搜索结果中找到并点击命令提示符。右键点击命令提示符图标,然后在弹出的菜单中选择以管理员身份运行。以管理员身份......