当前位置: 首页 > news >正文

Python实现Windows服务自启动、禁用、启动、停止、删除

如果一个程序被服务监管,那么仅仅kill程序是无用的,还要把服务关掉

import win32service
import win32serviceutildef EnableService(service_name):try:# 获取服务管理器scm = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ALL_ACCESS)# 获取服务的句柄service = win32service.OpenService(scm, service_name, win32service.SERVICE_ALL_ACCESS)# 自启动服务win32service.ChangeServiceConfig(service, win32service.SERVICE_NO_CHANGE, win32service.SERVICE_AUTO_START, win32service.SERVICE_NO_CHANGE, None, None, 0, None, None, None, None)print(f"{service_name} service  enabled successfully.")except Exception as e:print(f"Failed to enable {service_name} service. Error: {e}")finally:# 关闭服务句柄win32service.CloseServiceHandle(service)# 关闭服务管理器句柄win32service.CloseServiceHandle(scm)def StartService(service_name):try:win32serviceutil.StartService(service_name)print(f"{service_name} service started successfully.")except Exception as e:print(f"Failed to start {service_name} service. Error: {e}")def StopService(service_name):try:# 获取服务管理器scm = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ALL_ACCESS)# 获取服务的句柄service = win32service.OpenService(scm, service_name, win32service.SERVICE_ALL_ACCESS)# 停止服务win32service.ControlService(service, win32service.SERVICE_CONTROL_STOP)print(f"{service_name} service  stopped successfully.")except Exception as e:print(f"Failed to stop {service_name} service. Error: {e}")finally:# 关闭服务句柄win32service.CloseServiceHandle(service)# 关闭服务管理器句柄win32service.CloseServiceHandle(scm)def DisableService(service_name):try:# 获取服务管理器scm = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ALL_ACCESS)# 获取服务的句柄service = win32service.OpenService(scm, service_name, win32service.SERVICE_ALL_ACCESS)# 禁用服务win32service.ChangeServiceConfig(service, win32service.SERVICE_NO_CHANGE, win32service.SERVICE_DISABLED, win32service.SERVICE_NO_CHANGE, None, None, 0, None, None, None, None)print(f"{service_name} service  Disabled successfully.")except Exception as e:print(f"Failed to disable {service_name} service. Error: {e}")finally:# 关闭服务句柄win32service.CloseServiceHandle(service)# 关闭服务管理器句柄win32service.CloseServiceHandle(scm)
def Remove_Service(service_name):try:win32serviceutil.RemoveService(service_name)print(f"Service '{service_name}' removed successfully.")except Exception as e:print(f"Failed to remove service '{service_name}'. Error: {e}")service_name = 'PostgreSQL_65432'
# EnableService(service_name)
StartService(service_name)
#StopService(service_name)
#DisableService(service_name)
#Remove_Service(service_name)
http://www.lryc.cn/news/246852.html

相关文章:

  • 【华为OD题库-043】二维伞的雨滴效应-java
  • 百度手机浏览器关键词排名优化——提升关键词排名 开源百度小程序源码系统 附带完整的搭建教程
  • Git 的基本概念和使用方式。
  • MarkDown学习
  • 案例:某电子产品电商平台借助监控易保障网络正常运行
  • IntelliJ IDEA 中有什么让你相见恨晚的技巧
  • 游戏被攻击了怎么办
  • MySQL 索引类型
  • 哈希表——闭散列表
  • 【ArcGIS Pro微课1000例】0036:栅格影像裁剪与提取(矢量范围裁剪dem高程数据)
  • Doris-Routine Load(二十七)
  • linux驱动.之 网络udp应用层测试工具demon(一)
  • 【Flutter】graphic图表的快速上手
  • DeepMind 推出 OPRO 技术,可用于优化 ChatGPT 提示
  • 企业网络中的身份安全
  • 智能优化算法应用:基于正余弦算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 创建一个带有背景图层和前景图层的渲染窗口
  • Docker 运行 Oracle Autonomous Database Free Container
  • 《2023全球隐私计算报告》正式发布!
  • JAVA sql 查询2
  • 为第一个原生Spring5应用程序添加上Log4J日志框架!
  • 单片机复位电路
  • 11.28 知识回顾(Web框架、路由控制、视图层)
  • osgFX扩展库-异性光照、贴图、卡通特效(1)
  • SELinux零知识学习三十一、SELinux策略语言之角色和用户(2)
  • Unity UGUI的自动布局-LayoutGroup(水平布局)组件
  • 【SpringCloud】设计原则之分层架构与统一通信协议
  • 在Linux环境如何启动和redis数据库?
  • selenium判断元素是否存在的方法
  • 后端真批量新增的使用