Список локальных служб в Windows 10 с использованием Python? - PullRequest
0 голосов
/ 15 сентября 2018

Все, что мне нужно сделать, это создать программу, в которой перечислены все запущенные сервисы на моем компьютере с Windows. Я пробовал несколько методов, включая psutil, но безрезультатно. С тех пор я пытался упростить его, просто пытаясь выполнить команду «net stat». Это работает, но вывод искажен. Есть ли способ сохранить это в текстовом файле красиво и аккуратно? Кроме того, я хотел бы добавить слово «Бег» рядом с каждой строкой. Когда я пытаюсь добавить это, я получаю следующую ошибку:

Файл "./Python37/test3.py", строка 3, в print (str (result.stdout + 'running')) Ошибка типа: невозможно объединить str в байты

Вот мой код:

import subprocess
result = subprocess.run(['net', 'start'], stdout=subprocess.PIPE)
print(str(result.stdout + 'running'))

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Начиная с psutil 4.2.0 в палатах вы можете перечислять и запрашивать службы Windows, используя функции psutil.win_service_iter() и psutil.win_service_get(name).

>>> import psutil
>>> list(psutil.win_service_iter())
    [<WindowsService(name=AeLookupSvc, display_name=Application Experience) at 38850096>,
     <WindowsService(name=ALG, display_name=Application Layer Gateway Service) at 38850128>,
     <WindowsService(name=APNMCP, display_name=Ask Update Service) at 38850160>,
     <WindowsService(name=AppIDSvc, display_name=Application Identity) at 38850192>,
     ...
    ]
>>> s = psutil.win_service_get('alg')
>>> s.as_dict()

    {'binpath': 'C:\\Windows\\System32\\alg.exe',
     'description': 'Provides support for 3rd party protocol plug-ins for Internet Connection Sharing',
     'display_name': 'Application Layer Gateway Service',
     'name': 'alg',
     'pid': None,
     'start_type': 'manual',
     'status': 'stopped',
     'username': 'NT AUTHORITY\\LocalService'}
0 голосов
/ 15 сентября 2018

Использовать EnumServicesStatus API, как это:

import win32con
import win32service

def ListServices():
    resume = 0
    accessSCM = win32con.GENERIC_READ
    accessSrv = win32service.SC_MANAGER_ALL_ACCESS

    #Open Service Control Manager
    hscm = win32service.OpenSCManager(None, None, accessSCM)

    #Enumerate Service Control Manager DB
    typeFilter = win32service.SERVICE_WIN32
    stateFilter = win32service.SERVICE_STATE_ALL

    statuses = win32service.EnumServicesStatus(hscm, typeFilter, stateFilter)

    for (short_name, desc, status) in statuses:
        print(short_name, desc, status) 

ListServices();
  • win32service и win32con являются частью проекта с открытым исходным кодом pywin32, последнюю версию которого можно загрузить здесь .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...