运行程序写进win系统服务方法

0、sc介绍

SC 是用来与服务控制管理器和服务进行通信的命令行程序,可以利用该命令对win服务进行管理操作。注:sc的操作都需要管理员的权限

C:\Users\john>sc -help错误:  未知命令
描述:SC 是用于与服务控制管理器和服务进行通信的命令行程序。
用法:sc <server> [command] [service name] <option1> <option2>...选项 <server> 的格式为 "\\ServerName"键入 "sc [command]" 可以获得有关命令的进一步帮助命令:query-----------查询服务的状态,或枚举服务类型的状态。queryex---------查询服务的扩展状态,或枚举服务类型的状态。start-----------启动服务。pause-----------向服务发送 PAUSE 控制请求。interrogate-----向服务发送 INTERROGATE 控制请求。continue--------向服务发送 CONTINUE 控制请求。stop------------向服务发送 STOP 请求。config----------更改服务的配置(永久)。description-----更改服务的描述。failure---------更改服务失败时执行的操作。failureflag-----更改服务的失败操作标志。sidtype---------更改服务的服务 SID 类型。privs-----------更改服务的所需权限。qc--------------查询服务的配置信息。qdescription----查询服务的描述。qfailure--------查询失败时服务执行的操作。qfailureflag----查询服务的失败操作标志。qsidtype--------查询服务的服务 SID 类型。qprivs----------查询服务的所需权限。qtriggerinfo----查询服务的触发器参数。qpreferrednode--查询首选的服务 NUMA 节点。delete----------(从注册表)删除服务。create----------创建服务(将其添加到注册表)。control---------向服务发送控制。sdshow----------显示服务的安全描述符。sdset-----------设置服务的安全描述符。showsid---------显示相应于假定名称的 SID 字符串。triggerinfo-----配置服务的触发器参数。preferrednode---设置首选的服务 NUMA 节点。GetDisplayName--获取服务的 DisplayNameGetKeyName------获取服务的 ServiceKeyName。EnumDepend------枚举服务的依存关系。下列命令不要求服务名称:sc <server> <command> <option>boot------------(ok | bad) 指示是否将上一次启动保存为最近一次已知的正确启动配置Lock------------锁定服务数据库QueryLock-------查询 SCManager 数据库的 LockStatus
示例:sc start MyService

1、exe文件(nginx)

需要管理员权限执行以下命令

sc create nginxService binpath=xxx
例:
sc create nginxService binpath= C:\Users\BG264\Downloads\nginx-1.23.1\nginx-1.23.1\nginx.exe
[SC] CreateService 成功

注册进服务后默认不会开启,需要手动开启,可以进入管理开启,也可以用命令

sc start nginxService

2、Python文件

Python需要代码内注册服务,代码如下:(需要下载对应库文件)

from socket import socketimport servicemanager
import win32serviceutil
import win32service
import win32eventclass AppServerSvc(win32serviceutil.ServiceFramework):_svc_name_ = "TestService"_svc_display_name_ = "Test Service"def __init__(self, args):win32serviceutil.ServiceFramework.__init__(self, args)self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)socket.setdefaulttimeout(60)def SvcStop(self):self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)win32event.SetEvent(self.hWaitStop)def SvcDoRun(self):servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,servicemanager.PYS_SERVICE_STARTED,(self._svc_name_, ''))self.main()def main(self):pass

并且在程序启动的时候创建执行

if __name__ == '__main__':win32serviceutil.HandleCommandLine(AppServerSvc)

此外在运行Python脚本的时候需要添加 install 参数,例如

python3 main.py install

这样这个Python脚本就注册进win服务,同样不会自动启动,需要利用win的sc命令启动

# 启动服务
sc start MyService
# 停止服务
sc stop MyService
# 删除服务
sc delete MyService

3、.Net项目

.Net 需要在NuGet里面安装Microsoft.Extensions.Hosting.WindowsServices 包,然后修改Program.cs中启动配置类

Program.cs修改内容如下:

1、为Host增加UseWindowsServices方法。
2、注释掉config.SetBasePath方法

3、使用UseUrls方法指定应用程序启动后使用的端口号和协议(http、https)

完整配置方法如下:

 public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).UseWindowsService().ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseUrls("http://*:8080").UseStartup<Startup>();});

修改后即可发布项目,利用sc命令创建一个win服务

sc create dotnetService binpath=C:\project\WebApplication1\WebApplication1\bin\Debug\net6.0\WebApplication1.exe
[SC] CreateService 成功

同样,服务创建后不会启动,需要手动启动

sc  start dotnetService

普通exe文件、Python脚本、.Net项目写进win系统服务方法总结相关推荐

  1. 如何把华为数据分析项目写进简历

    文末免费领取公开课与知识地图 前两天和朋友们约饭,大部分都是阿里的,大家都是同龄人,表面看都差不多,但收入差距越来越大.一群人P6-P7-P8都有,收入相差好几倍.不用开口,大家就知道彼此的当量(还好 ...

  2. 关于win7系统中所有exe文件都被以word方式打开的解决方法

    关于win7系统中所有exe文件都被以word方式打开的解决方法 参考文章: (1)关于win7系统中所有exe文件都被以word方式打开的解决方法 (2)https://www.cnblogs.co ...

  3. 好玩的脚本代码大全_Github | 推荐一个Python脚本集合项目

    点击上方"蓝字"关注我们 Python大数据分析 记录   分享   成长 用python写小脚本是一件好玩的事情,因为不是个大活儿,而且能解决眼边前十分繁琐的事情,这种轻松且便宜 ...

  4. python脚本开头怎么写_浅谈Python脚本开头及导包注释自动添加方法

    浅谈Python脚本开头及导包注释自动添加方法 1.开头:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定 #!/usr/bin/python 是用来 ...

  5. 服务器部署datax+使用Python脚本导数+项目数据

    一.Datax基础知识 1.什么是Datax? DataX 是阿里云商用产品 DataWorks 数据集成的开源版本,它是一个异构数据源的离线数据同步工具/平台(ETL工具).DataX 实现了包括 ...

  6. Ubuntu下如何将文件夹中图片索引写进txt文件中

    方法之一 sudo find dress/ -name *.jpg | cut -d '/' -f2-3 > train_dress.txt "find"后面跟的是当前文件下 ...

  7. 手把手带你用Python完成一个能写进简历的项目(实战篇)

    回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 万战自称不提刃,生来双眼篾群容. 大家好,我是梦魇762459510. 前言 相信大家对任务管理器都不是 ...

  8. python解压打开文件过多_自动解压大量压缩文件 Python 脚本 | 学步园

    之前写了一个自动解压压缩文件到压缩文件所在文件夹的脚本 后根据自己需要,写了另外两个.原理一样 都是使用winrar的命令 第一个脚本没考虑周到,只能解压rar文件 改进后可以支持winrar支持的各 ...

  9. 有关mp3转换为npy文件python脚本的一些理解

    一些继续的探索学习 feature extraction technique to get a vector of a fixed length from each voice sample, the ...

最新文章

  1. xsd文件转图片_图片转换成PDF格式怎么转?图片转换成PDF的软件哪个好?
  2. velocimeter-view android测速仪效果
  3. python3教程廖雪峰云-python3基础教程廖雪峰云(如何规划研究生三年最后成为谷歌软件工程师)...
  4. 深度学习——02、深度学习入门 15-18
  5. smartctl 输出详解
  6. 用SMO算法实现了SVM的感悟
  7. win10无法新建文件夹怎么办 win10右键新建菜单设置方法
  8. 微软Windows2003的正版安装序列号
  9. GeoNet Deep Geodesic Networks for Point Cloud Analysis
  10. CATIA V6 二次开发—概述
  11. Hexo/Github.io 配置腾讯云CDN
  12. Japanese的意思
  13. 一个农村博士的独白:全家为什么只有我读到了博士?
  14. 荣耀v40和华为nova8参数对比哪个好 华为nova8和荣耀v40的区别
  15. 深度探讨,共创未来 | 思爱普(SAP) 助力碧桂园实现数字化转型
  16. 记应聘:华为 可信理论、技术与工程实验室 产品数据工程师
  17. 尼尔机械纪元安卓机器人_尼尔机械纪元安卓正版下载-尼尔机械纪元steam下载-k73游戏之家...
  18. Asterisk PBX
  19. 多张图片合并一张图片,在中间添加文字
  20. Python基础与拾遗2:Python中的字符串与字符串格式化

热门文章

  1. 性能测试(Performance)
  2. Chrome浏览器键盘快捷键
  3. 犹抱琵琶半遮面-OC
  4. JS新闻消息上下滚动
  5. 咸鱼K210体验笔记—图片拍摄
  6. 七大行星排列图片_七大行星大小排列顺序,其实是八大(水星最小/木星最大)【图文】...
  7. 成为IT精英,我奋斗7年【转】
  8. Kafka 批量消费
  9. 企业微信发送应用消息php,企业微信如何发送应用消息?及时发布重要通知
  10. python做智能ai的狼吃羊