一、背景描述
在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

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

  1. 用命令行安装并启动Windows Phone 8 App

    一.安装并启动应用 "C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Tools\XAP Deployment\XapDep ...

  2. Matlab中调用VS编译的exe文件并传递变量 的方法

    经历::在网上找了很多方法,都没有实现在matlab中调用vs的exe文件并且能够传递变量参数,一些小细节花费了自己很多时间,比喻忽略了一些空格!  网上很多的方法都是纯粹复制别人的方法,自己都没有去 ...

  3. 在InstallShield中发布单一的Setup.exe文件

    原文:在InstallShield中发布单一的Setup.exe文件 InstallShield默认的Release模式下,生成了一个setup.exe文件,一个msi文件,以及一些其它的杂项文件. ...

  4. bat调用exe文件并且传递参数

    bat调用exe文件并且传递参数 bat调用exe,并且传递日期参数,代码: @echo off cd "E:\SublimeWorks\exe" start xyzj_shrjj ...

  5. VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录

    VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录 一.描述 系统描述:win7旗舰版64位系统+VMware Workst ...

  6. 软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序

    软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序 格式:wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数 ...

  7. .NET 跨平台RPC框架DotNettyRPC Web后台快速开发框架(.NET Core) EasyWcf------无需配置,无需引用,动态绑定,轻松使用 C# .NET 0配置使用Wcf(半成品) C# .NET Socket 简单实用框架 C# .NET 0命令行安装Windows服务程序

    .NET 跨平台RPC框架DotNettyRPC   DotNettyRPC 1.简介 DotNettyRPC是一个基于DotNetty的跨平台RPC框架,支持.NET45以及.NET Standar ...

  8. Windows Server 2003服务器无法下载.exe文件的解决方法

    今天架设了一台Windows Server 2003的网站服务器,发现打开网页后无法下载网站中的.exe文件,经过研究问题得以解决,拿来做个备忘. 解决方法非常简单,只需要在IIS中,将网站属性里的执 ...

  9. python中pygame游戏打包为exe文件

    pyinstaller打包游戏的方法: 1.在命令窗口安装pyinstaller ->pip install pyinstaller 2.查看安装的版本信息 pyinstaller -v 3.进 ...

  10. 在windows中使用PuTTy上传下载文件和目录

    打开windows的cmd,使用cd命令切换到PuTTy安装目录 C:\Users\NUC>cd C:\Program Files\PuTTY 在cmd中使用pscp命令上传下载文件 windo ...

随机推荐

  1. 试用阿里云GPU服务器进行深度学习模型训练

    试用阿里云GPU服务器进行深度学习模型训练 最近在用PyTorch时发现在本地训练模型速度一言难尽,然后发现阿里云可以白嫖gpu服务器,只要没有申请过PAI-DSW资源的新老用户都可以申请5000CU ...

  2. OpenSergo & CloudWeGo 共同保障微服务运行时流量稳定性

    简介: 流控降级与容错是微服务流量治理中的重要的一环,同时 MSE 还提供更广范围.更多场景的微服务治理能力,包括全链路灰度.无损上下线.微服务数据库治理.日志治理等一系列的微服务治理能力. 作者:宿 ...

  3. 测试环境不稳定&复杂的必然性及其对策

    简介: 为什么测试环境的不稳定是必然的,怎么让它尽量稳定一点?为什么测试环境比生产环境更复杂,怎么让它尽量简单一点?本文将就这两点进行分享.同时,还会谈一谈对测试环境和生产环境的区别的理解. 作者 | ...

  4. 分久必合的Lindorm传奇

    简介: 2009年,阿里巴巴首先提出用分布式架构替代传统商业数据库,成功用自主开源的AliSQL支撑双11数据洪流:2016年,为应对超大规模业务场景,阿里云开始自研分布式数据库.十余年间,阿里巴巴数 ...

  5. 阿里云服务网格ASM集成SLS告警

    ​简介:随着微服务的流行,微服务的架构也在不断的发展演进,Spring Cloud 与 Dubbo为代表的微服务开发框架也得到了普及和落地:在云原生时代,无侵入的服务网格(Service Mesh)开 ...

  6. 漫画 | 一口气搞懂 Serverless !

    ​简介: 第二届云原生编程挑战赛为热爱技术的年轻人提供一个挑战世界级技术问题的舞台,希望用技术为全社会创造更大价值. 作者 | 刘欣 呃,我可能是别人眼中所说的不用奋斗的一代. 大家喜欢听的什么多姿多 ...

  7. k8s对接Ceph实现持久化存储(16)

    一.Ceph简介 官网:https://ceph.com/en/ https://docs.ceph.com/en/latest/start/intro/ ceph 是一种开源的分布式的存储系统 包含 ...

  8. Prometheus+Grafana+alertmanager构建企业级监控系统(一)

    一.环境准备 k8s集群角色 IP 主机名 配置 控制节点 192.168.199.131 master centos7.9 4核6G 工作节点 192.168.199.128 monitor cen ...

  9. MDK在头文件中使用预编译器时,#ifdef 无效的问题

    问题:在头文件中使用预编译时,会出现无效的现象 在a.h文件中定义了宏AA_TEST,如下所示 #ifndef __A_H #define __A_H #define AA_TEST #endif 在 ...

  10. 习题8 #第8章 Verilog有限状态机设计-2 #Verilog #Quartus #modelsim

    2. 设计一个"1001"串行数据检测器,其输入.输出如下: 输入x:000 101 010 010 011 101 001 110 101 输出z:000 000 000 010 ...