Уничтожение службы Windows программно в Python - PullRequest
0 голосов
/ 23 октября 2018

Я бы хотел быстро убить службу Windows, а не останавливать ее.Служба представляет собой процесс python, поэтому имя процесса - python.exe, и поэтому я не могу уничтожить процесс по имени.В данный момент я использую sc queryex servicename, затем анализирую PID и убиваю PID.Это проблематично для моей подпроцессорной обработки (в настоящее время я закрываю сразу несколько служб, используя Popen и contextlib.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 - оба метода, которые вызывают taskkill для уничтожения службы, либо по имени процесса, либо по PID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...