在64位Windows上列出正在运行的进程
我amm写一个小的python脚本,将从我正在运行的Windows虚拟机中获取信息。
目前我可以使用以下方法在32位XP机器上列出进程:
http://code.activestate.com/recipes/305279/
是否有可能以某种方式检测正在运行的Windows版本,并执行一个不同的方法来获取64位机器上的进程,我试图从64位Vista和64位Windows 7获得进程。
有任何想法吗?
在activestate上有另外一个做类似的事情,但使用性能数据助手库(PDH)来代替。
我已经在我的Windows 7 64位机器上testing过了,它在那里工作 – 所以大致相同的function可以在32位和64位窗口上工作。
你可以在这里find配方: 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 如果你不想依赖任何额外安装的模块,那么你可以parsingwmic的输出,例如:
 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/
为了类似的目的,我使用了psutil库。 一些提示:
-  使用psutil.pids()列出进程psutil.pids()( 参考 )
-  用process = psutil.Process(pid)( 引用 )检查进程信息
-  做process.kill或process.terminate()
 在windows上安装 pip将从源代码(这意味着编译)进行安装,所以你可能想从https://pypi.python.org/pypi/psutil/#downloads下载二进制安装。; 
我发现解决这个问题最简单的方法是使用Robert Lujo推荐的psutil库:
 psutil.process_iter() 
请注意,它返回一个生成器对象,一次发出一个过程对象。 例如,如果您需要进程名称列表,您可以执行如下操作:
 [p.name() for p in psutil.process_iter()] 
您应该能够通过在每个虚拟机中公开Windows Management Instrumentation来实现这一点。 此工具可让您访问一系列系统数据,包括进程,请参阅http://technet.microsoft.com/en-us/library/cc757287%28WS.10%29.aspx
你应该能够在上面的链接中的一个命令,以获得你正在寻找的信息。