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

news2024/11/24 23:09:35

一、背景描述

        在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.coloradmin.cn/o/1050861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华秋DFM从2.1.6升级到3.x版本出现的问题

以前一直使用CAM350检查最终的gerber,后来无意中接触到了华秋DFM,使用起来简单许多,将可制造性排查的相当完整。 但是前不久因为一块板卡刚出炉,需要检查DFM,于是开启了华秋,刚打开,说可以更新…

华为云云耀云服务器L实例评测 | 实例评测使用之体验评测:华为云云耀云服务器安全加固/防范黑客攻击

华为云云耀云服务器L实例评测 | 实例评测使用之体验评测:华为云云耀云服务器安全加固/防范黑客攻击 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么华为云云…

SpringCloud之NamedContextFactory

NamedContextFactory 可以创建一个子容器&#xff08;或者说子上下文&#xff09;&#xff0c;每个子容器可以通过 Specification 定义 Bean。 public abstract class NamedContextFactory<C extends NamedContextFactory.Specification>implements DisposableBean, App…

Opengl之多光源

GLSL中的函数和C函数很相似&#xff0c;它有一个函数名、一个返回值类型&#xff0c;如果函数不是在main函数之前声明的&#xff0c;我们还必须在代码文件顶部声明一个原型。我们对每个光照类型都创建一个不同的函数&#xff1a;定向光、点光源和聚光。 当我们在场景中使用多个…

413 Request Entity Too Large问题

问题背景 在某系统中上传文件时&#xff0c;如果文件大小超过了一定范围就会爆 413 Request Entity Too Large 问题。 原因 在使用 nginx 反向代理后台服务时&#xff0c;如果请求体中过大&#xff0c;超过了默认的 1M 则会爆该错误。 解决方案 在 nginx 中&#xff0c;指…

Linux 创建 终止线程(thread)

进程线程区别 创建线程 #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); -功能&#xff1a;创建一个子线程&#xff0c;一般情况下main函数所在的线程称为主线程&#xff0c;…

C++标准模板(STL)- 输入/输出操纵符-(std::setprecision,std::setw)

操纵符是令代码能以 operator<< 或 operator>> 控制输入/输出流的帮助函数。 不以参数调用的操纵符&#xff08;例如 std::cout << std::boolalpha; 或 std::cin >> std::hex; &#xff09;实现为接受到流的引用为其唯一参数的函数。 basic_ostream::…

微信、支付宝、百度、抖音开放平台第三方代小程序开发总结

大家好&#xff0c;我是小悟 小伙伴们都开启小长假了吧&#xff0c;值此中秋国庆双节之际&#xff0c;小悟祝所有的小伙伴们节日快乐。 支付宝社区很用心&#xff0c;还特意给寄了袋月饼&#xff0c;愿中秋节的圆月带给你身体健康&#xff0c;幸福团圆&#xff0c;国庆节的旗帜…

【AI视野·今日CV 计算机视觉论文速览 第257期】Fri, 29 Sep 2023

AI视野今日CS.CV 计算机视觉论文速览 Fri, 29 Sep 2023 Totally 99 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Learning to Transform for Generalizable Instance-wise Invariance Authors Utkarsh Singhal, Carlos Esteves, Ameesh M…

json对象中嵌套一个json字符串,python如何生成带有转义字符的json的字符串?

前言 不想用java去弄&#xff0c;一顿操作json.dumps也没用&#xff0c;后面才知道需要这么操作 目的生成&#xff1a; data {"json": "{\"key1\": \"value1\", \"key2\": \"value2\"}" }但是直接用 import …

Scala第七章节

Scala第七章节 scala总目录 章节目标 掌握继承和抽象类相关知识点掌握匿名内部类的用法了解类型转换的内容掌握动物类案例 1. 继承 1.1 概述 实际开发中, 我们发现好多类中的内容是相似的(例如: 相似的属性和行为), 每次写很麻烦. 于是我们可以把这些相似的内容提取出来单…

探索社会工程的深度:从定义到高级攻击策略

在广阔的网络安全领域&#xff0c;社会工程作为一种微妙的威胁而出现&#xff0c;它利用人类的漏洞来访问敏感信息或实施欺诈。网络安全背景下的社会工程的定义很明确&#xff1a;它包括使用欺骗手段操纵个人泄露机密或个人信息&#xff0c;然后将这些信息用于欺诈目的。 此类…

树与二叉树的概念 性质及其存储结构

&#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;数据结构 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f339;&#x1f339;关注我带你学习编程知识 树与二叉树 树的概念与结构&#xff1a;树的概…

ROS2 从头开始​​:第6部分 - ROS2 中的 DDS,用于可靠的机器人通信

一、说明 在这篇文章中,我们将重点关注 ROS 2的通信栈DDS,其中这是介于管理节点通信与控制节点通信环节,是上位机决策体系与下位机的控制体系实现指令-执行-反馈的关键实现机制。 二、ROS工程的概念框架 现代机器人系统非常复杂,因为需要集成各种类型的传感器、执行器和其…

pygame - 贪吃蛇小游戏

蛇每吃掉一个身体块&#xff0c;蛇身就增加一个长度。为了统一计算&#xff0c;界面的尺寸和游戏元素的位置都是身体块长度的倍数 1. 上下左右方向键&#xff08;或者ASDW键&#xff09;控制蛇的移动方向 2. 空格键暂停和继续图片文件&#xff0c;复制到项目的asset\img目录下i…

每天只需这样做,轻松提升你的演讲口才

锻炼自己的演讲口才需要长期的练习。以下几点方法可以帮助你提高&#xff1a; 1. 多观看优秀演讲视频。观看他人优秀的演讲&#xff0c;可以学习到他人的语调、节奏、动作表情等技巧&#xff0c;这对我们提高自己的很有帮助。例如可以观看TED演讲、企业年会等形式的演讲视频。…

从零开始的C++(二)

1.为什么C有函数重载但是C没有函数重载&#xff1f; 这涉及了C、C的函数命名习惯&#xff0c;在C语言编译阶段&#xff0c;函数的命名不会受其参数列表的影响&#xff0c;即只要函数名相同编译出的函数名就相同。但在C中&#xff0c;函数命名受影响&#xff0c;如下图所示&…

uboot启动流程-uboot链接接脚本

一. uboot 启动流程 本文我们来详细的分析一下 uboot 的启动流程&#xff0c;理清 uboot 是如何启动的。通过对 uboot 启动流程的梳理。 我们就可以掌握一些外设是在哪里被初始化的&#xff0c;这样当我们需要修改这些外设驱动的时候就会心里有数。另外&#xff0c;通过分析 …

华为云云耀云服务器L实例评测 | 实例场景体验之搭建个人博客:通过华为云云耀云服务器构建个人博客

华为云云耀云服务器L实例评测 &#xff5c; 实例场景体验之搭建个人博客&#xff1a;通过华为云云耀云服务器构建个人博客 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云云耀…

COCO 数据集 人体关键点格式

图片与标注数据在 COCO官网 均提供下载 标注格式 COCO 的标注中包含 4 个部分/字段&#xff0c;"info" 描述数据集&#xff0c;"licenses" 描述图片来源&#xff0c;"images" 和 "annotations" 是主体部分 "images" 部分…