Python 如何控制 Windows 系统服务?

import wmi

def listservices():

c = wmi.WMI()
for service in c.Win32_Service():
    #print(service.Caption,service.StartMode,service.State)
    print(service.Caption)     #名称
    print(service.StartMode)   #启动类型
    print(service.State)       #状态

if name=='main': listservices()

可以获取当前全部的系统服务的名称 启动类型、状态 但是要怎么才可以更改呢?


Python 如何控制 Windows 系统服务?

5 回复

要控制Windows系统服务,Python可以通过pywin32库来实现。这里给你一个完整的示例:

import win32serviceutil
import win32service
import win32con

def control_service(service_name, action):
    """控制Windows服务
    
    Args:
        service_name: 服务名称
        action: 操作类型 ('start', 'stop', 'restart', 'pause', 'continue')
    """
    try:
        if action == 'start':
            win32serviceutil.StartService(service_name)
            print(f"服务 {service_name} 已启动")
            
        elif action == 'stop':
            win32serviceutil.StopService(service_name)
            print(f"服务 {service_name} 已停止")
            
        elif action == 'restart':
            win32serviceutil.RestartService(service_name)
            print(f"服务 {service_name} 已重启")
            
        elif action == 'pause':
            win32serviceutil.ControlService(service_name, win32con.SERVICE_CONTROL_PAUSE)
            print(f"服务 {service_name} 已暂停")
            
        elif action == 'continue':
            win32serviceutil.ControlService(service_name, win32con.SERVICE_CONTROL_CONTINUE)
            print(f"服务 {service_name} 已恢复")
            
        else:
            print(f"不支持的操作: {action}")
            
    except Exception as e:
        print(f"操作失败: {e}")

# 使用示例
if __name__ == "__main__":
    # 控制Windows Update服务
    control_service("wuauserv", "stop")  # 停止服务
    control_service("wuauserv", "start")  # 启动服务
    
    # 查询服务状态
    status = win32serviceutil.QueryServiceStatus("wuauserv")
    print(f"服务状态: {status[1]}")

首先需要安装依赖:pip install pywin32

主要用到的模块:

  • win32serviceutil: 提供服务的启动、停止、重启等操作
  • win32service: 包含服务相关的常量和函数
  • win32con: Windows常量定义

关键函数说明:

  • StartService(): 启动服务
  • StopService(): 停止服务
  • RestartService(): 重启服务
  • QueryServiceStatus(): 查询服务状态
  • ControlService(): 发送控制命令(暂停、恢复等)

获取服务名称可以用services.msc查看,或者用sc query命令。

总结:用pywin32的service模块就能搞定。

os.system(“net stop/start service_name”)

状态可以 sc query service_name

回到顶部