在python中以编程方式终止Windows服务

2024-03-29 06:46:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想快速杀死一个windows服务,而不是停止它。服务是一个python进程,因此进程的名称是python.exe,因此我无法按名称终止进程。目前,我正在使用sc queryex servicename,然后从中解析PID并按PID终止。这对于我的子进程来说是有问题的(我目前正在使用Popencontextlib.exitstack同时关闭许多服务),因为这需要运行两个命令,因此这些命令中只有一个可以并行化。你知道吗

有可能一次性完成吗?这是我的密码:

# This portion is not parallel
pid_data = subprocess.check_output(["sc", "queryex", "svcname"])

if pid_data[0] != "PID":
    raise ValueError("Incorrect line number while running svc search.")
else:
    msgsvc_pid = int(pid_data[1])

with contextlib.ExitStack() as stack:
    # This portion is parallel
    stack.enter_context(self._kill_service_by_pid(msgsvc_pid, quiet))
    for svc in svc_list:
        stack.enter_context(self._kill_service(svc, quiet))

其中_kill_service_by_pid_kill_service都是通过进程名或PID调用taskkill终止服务的方法。你知道吗


Tags: 命令名称data进程stackservicethispid