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

一、背景描述

        在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 Learnsc.exe create 命令的参考文章,该命令为注册表和服务控制管理器数据库中的服务创建子项和条目。icon-default.png?t=N7T8https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/sc-create使用 SC 配置服务 - Win32 apps | Microsoft LearnWindows SDK 包含命令行实用工具(Sc.exe),可用于查询或修改已安装服务的数据库。 其命令对应于 SCM 提供的函数。 语法如下所示。icon-default.png?t=N7T8https://learn.microsoft.com/zh-CN/windows/win32/services/configuring-a-service-using-sc操作系统的 Net 命令 - Windows Server | Microsoft Learn提供有关操作系统上的 Net 命令的一些信息。icon-default.png?t=N7T8https://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 Managericon-default.png?t=N7T8https://nssm.cc/NSSM下载界面icon-default.png?t=N7T8https://nssm.cc/download下载nssm-2.24.zipicon-default.png?t=N7T8https://nssm.cc/release/nssm-2.24.zip

3.2、将bat或exe文件封装为服务

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

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

直接对需要封装的bat或exe文件进行创建服务

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

3nssm start 服务名称

启动指定的服务

比如:【nssm start testbatservice】

4nssm pause 服务名称

暂停服务

比如:【nssm pause testbatservice】

5nssm restart 服务名称

重启服务

比如:【nssm restart testbatservice】

6nssm stop 服务名称

停止服务

比如:【nssm stop testbatservice】

7nssm remove 服务名称

删除服务

比如:【nssm remove testbatservice】

NSSM服务封装工具的完整命令行内容icon-default.png?t=N7T8https://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)

⑦移除服务

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/120976.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用KEIL自带的仿真器仿真遇到问题解决

*** error 65: access violation at 0x40021000 : no read permission 修改debug选项设置为下方内容。

数据结构:简单记录顺序表、链表、栈、队列

初学者很容易认为顺序表、链表、栈、队列是四种并列的数据结构,其实仔细想想并不是。 注意区分: 顺序表和链表是指数据的存储结构,是线性表的一种,顺序表一般指的就是数组,数据存储的逻辑顺序和物理顺序都是连续的&a…

ICMP差错包

ICMP报文分类 Type Code 描述 查询/差错 0-Echo响应 0 Echo响应报文 查询 3-目的不可达 0 目标网络不可达报文 差错 1 目标主机不可达报文 差错 2 目标协议不可达报文 差错 3 目标端口不可达报文 差错 4 要求分段并设置DF flag标志报文 差错 5 源路由…

华为OD机试 - 快递业务站 - 并查集(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入:2、输出:3、说明: 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机…

若依不分离+Thymeleaf select选中多个回显

项目中遇到的场景&#xff0c;亲测实用 表单添加时&#xff0c;select选中多个&#xff0c;编辑表单时&#xff0c;select多选回显&#xff0c;如图 代码&#xff1a; // 新增代码 <label class"col-sm-3 control-label">通道&#xff1a;</label><…

阿里云服务器方升架构、自研硬件、AliFlash技术创新

阿里云服务器技术创新&#xff1a;服务器方升架构及自研硬件、自研存储硬件AliFlash和阿里云异构计算加速平台&#xff0c;阿里云百科分享阿里云服务器有哪些技术创新&#xff1a; 目录 服务器技术创新 服务器方升架构及自研硬件 自研存储硬件AliFlash 阿里云异构计算加速…

基于FFmpeg+SDL的视频播放器的制作

基于FFmpegSDL的视频播放器的制作 基于FFmpegSDL的视频播放器的制作实验1实验2实验3实验4基本练习进阶练习 实验5实验6 基于FFmpegSDL的视频播放器的制作 雷霄骅博士的课程。 课程链接&#xff1a;https://blog.csdn.net/leixiaohua1020/article/details/47068015 初学 FFmp…

Go语言开发小技巧易错点100例(九)

往期回顾&#xff1a; Go语言开发小技巧&易错点100例&#xff08;一&#xff09;Go语言开发小技巧&易错点100例&#xff08;二&#xff09;Go语言开发小技巧&易错点100例&#xff08;三&#xff09;Go语言开发小技巧&易错点100例&#xff08;四&#xff09;Go…

深入理解二叉树:结构、遍历和实现

文章目录 &#x1f34b;引言&#x1f34b;什么是二叉树&#xff1f;&#x1f34b;二叉树的基本性质&#x1f34b;二叉树的遍历&#x1f34b;二叉树的实现&#x1f34b;结语 &#x1f34b;引言 在计算机科学中&#xff0c;二叉树是一种重要的数据结构&#xff0c;广泛应用于各种…

java面试题-常见技术场景

常见技术场景 1.单点登录这块怎么实现的 1.1 概述 单点登录的英文名叫做&#xff1a;Single Sign On&#xff08;简称SSO&#xff09;,只需要登录一次&#xff0c;就可以访问所有信任的应用系统 在以前的时候&#xff0c;一般我们就单系统&#xff0c;所有的功能都在同一个…

[plugin:vite:css] [sass] Undefined mixin.

前言&#xff1a; vite vue3 TypeScript环境 scss报错&#xff1a; [plugin:vite:css] [sass] Undefined mixin. 解决方案&#xff1a; 在vite.config.ts文件添加配置 css: {preprocessorOptions: {// 导入scss预编译程序scss: {additionalData: use "/resources/_ha…

纯css html 真实水滴效果

惯例,不多说直接上图 秉承着开源精神,我们将这段代码无私地分享给大家&#xff0c;因为我们深信&#xff0c;信息的共享和互相学习是推动科技进步的关键。我们鼓励大家在使用这段代码的同时&#xff0c;也能够将其中的原理、思想和经验分享给更多的人。 这份代码是我们团队用心…