列出64位Windows上的运行进程
我正在写一个小的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