我需要做的就是创建一个程序,列出我的Windows机器上所有正在运行的服务。我尝试了很多方法,包括psutil无济于事。我试图通过尝试执行“net stat”命令来尝试简化它。它工作正常,但输出是乱码。反正有没有把它保存到文本文件漂亮又整洁?另外,我想在每一行旁边添加“Running”一词。当我尝试添加它时,我收到以下错误:
文件“./Python37/test3.py”,第3行,打印(str(result.stdout +'running'))TypeError:无法将str连接到字节
到目前为止,这是我的代码:
import subprocess
result = subprocess.run(['net', 'start'], stdout=subprocess.PIPE)
print(str(result.stdout + 'running'))
像这样使用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();
从here上你可以使用psutil 4.2.0
和psutil.win_service_iter()
函数列出并查询windows服务。
psutil.win_service_get(name)