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 回复
service.ChangeStartMode (StartMode=“Automatic”)
https://mail.python.org/pipermail/python-list/2003-September/226274.html
要控制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
👍

