列出64位Windows上的正在运行的进程

时间:2009-10-27 16:55:38

标签: python windows process

我正在编写一个小python脚本,它将从我正在运行的Windows的VM中获取信息。

目前我可以使用以下方法在32位XP机器上列出进程:

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

是否有可能以某种方式检测正在运行的Windows版本并执行另一种方法来获取64位计算机上的进程,我试图从64位Vista和64位Windows 7中获取进程。

有什么想法吗?

5 个答案:

答案 0 :(得分:23)

如果您不想依赖任何额外安装的模块,那么您可以解析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/

答案 1 :(得分:21)

activestate上还有另一个处方类似的方法,但是使用了Performance Data Helper库(PDH)。

我已经在我的Windows 7 64位机器上测试了它并且它在那里工作 - 所以可能相同的功能将在32位和64位窗口上工作。

您可以在此处找到食谱:http://code.activestate.com/recipes/303339/

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

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

import wmi
c = wmi.WMI ()

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

答案 2 :(得分:7)

出于类似目的,我使用了psutil库。一些提示:

  • 使用psutil.pids()reference
  • 列出流程
  • 使用process = psutil.Process(pid)reference
  • 检查流程信息
  • 执行process.killprocess.terminate()
Windows上的

Installation - pip将从源代码进行安装(这意味着编译),因此您可能希望从https://pypi.python.org/pypi/psutil/#downloads下载二进制安装。

答案 3 :(得分:6)

我发现解决此问题的最简单方法是使用Robert Lujo建议的psutil库:

psutil.process_iter()

请注意,它返回一个生成器对象,一次发出一个进程对象。例如,如果您需要进程名称列表,则可以执行以下操作:

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

答案 4 :(得分:0)

您应该可以通过在每个VM中展示Windows Management Instrumentation来实现此目的。通过此工具,您可以访问大量系统数据,包括流程,请参阅http://technet.microsoft.com/en-us/library/cc757287%28WS.10%29.aspx

您应该能够popen上一个链接中的一个命令来获取您正在寻找的信息。