使用Python获取Windows 8.1进程列表

2 投票
2 回答
1253 浏览
提问于 2025-04-18 02:44

我想在Windows 8.1中获取内存中进程的列表,包括进程名称和PID(进程标识符)。

这是我的代码:

import subprocess
import os

cmd = "WMIC PROCESS get Caption,ProcessId"
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
  # Additional logic here

这个循环从来没有执行过。这个代码在早期版本的Windows 8中是可以工作的。有人能推荐其他的方法吗?

2 个回答

1

Shx2,感谢你的回复。虽然你的解决方案更适合多平台支持,但由于我只在使用Windows 8.1,所以我选择了这个方案。

 from win32com.client import GetObject

 Wmi = GetObject('winmgmts:')
 processes = Wmi.InstancesOf('Win32_Process')

 # Get the Explorer process
 explorer = Wmi.ExecQuery('select * from Win32_Process where Name="explorer.exe"')

 # Grab its Pid
 processId = explorer[0].Properties_('ProcessId').Value
3

与其使用麻烦的 subprocess,不如试试这个很棒的、跨平台的 psutil 库。

使用通用的 psutil.process_iter() 方法,你可以对它返回的 Process 对象做很多事情,比如获取进程名称、进程ID,或者筛选出你感兴趣的进程等等。

例如:

for proc in psutil.process_iter():
    print proc.pid, proc.name

撰写回答