列出64位Windows上的运行进程

15 投票
5 回答
67765 浏览
提问于 2025-04-15 15:25

我正在写一个小的Python脚本,用来获取我正在运行的Windows虚拟机上的信息。

目前,我可以通过以下方法列出32位XP机器上的进程:

http://code.activestate.com/recipes/305279/

我想知道有没有办法检测当前运行的Windows版本,然后用不同的方法来获取64位机器上的进程。我想从64位的Vista和64位的Windows 7中获取进程。

有没有什么想法?

5 个回答

11

我找到的最简单的方法是使用psutil这个库,正如Robert Lujo推荐的那样:

psutil.process_iter()

需要注意的是,它返回的是一个生成器对象,每次会发出一个进程对象。如果你想要获取进程名称的列表,可以这样做:

[p.name() for p in psutil.process_iter()]
28

如果你不想依赖任何额外安装的模块,那么你可以解析一下 wmic 的输出,比如:

c:\> wmic process get description,executablepath    
...
explorer.exe               C:\Windows\explorer.exe
cmd.exe                    C:\Windows\SysWOW64\cmd.exe
conhost.exe                C:\Windows\system32\conhost.exe
...

参考链接:http://geekpedia.wordpress.com/2008/08/18/use-command-line-to-track-windows-processes/

27

在activestate上还有另一个类似的做法,不过它使用的是性能数据助手库(PDH)。

我在我的Windows 7 64位电脑上测试过这个方法,运行得很好,所以可以推测这个功能在32位和64位的Windows上都能用。

你可以在这里找到这个做法:http://code.activestate.com/recipes/303339/

另一种方法是使用WMI,这里有一个用Python和wmi模块的例子:

http://timgolden.me.uk/python/wmi/cookbook.html

import wmi
c = wmi.WMI ()

for process in c.Win32_Process ():
  print process.ProcessId, process.Name

撰写回答