使用Python列出Windows 10上本地运行的服务?

baubqpgj  于 2022-12-28  发布在  Python
关注(0)|答案(2)|浏览(198)

我所要做的就是创建一个程序,列出我的Windows机器上所有正在运行的服务。我尝试了很多方法,包括psutil,但都无济于事。此后,我一直试图通过执行"net stat"命令来简化它。它工作正常,但输出是乱码。有没有办法将其保存到一个文本文件中?另外,我想在每一行的后面加上'Running'这个词。当我尝试添加这个词时,我得到了以下错误:
File "./Python37/test3.py", line 3, in print(str(result.stdout + 'running')) TypeError: can't concat str to bytes
下面是我的代码:

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

vxbzzdmp1#

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开源项目的一部分,您可以下载最新版本here
nhaq1z21

nhaq1z212#

psutil 4.2.0开始,您可以使用以下API列出和查询Windows服务。

  • 第一个月

用法:

>>> 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>,
 ...]
  • psutil.win_service_get(name)-按名称获取Windows服务

用法:

>>> import psutil
>>> 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'}

相关问题