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

Rai*_*Son 9 python windows process

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

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

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

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

有任何想法吗?

ori*_*rip 25

如果您不想依赖任何额外安装的模块,那么您可以解析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
...
Run Code Online (Sandbox Code Playgroud)

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


And*_*ler 23

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
Run Code Online (Sandbox Code Playgroud)


Rob*_*ujo 8

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

  • 列出进程psutil.pids()(参考)
  • 检查过程信息process = psutil.Process(pid)(参考)
  • process.killprocess.terminate()

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

  • psutil将其进程输出限制为运行python脚本的当前用户.因此,非管理员用户将看不到特权进程. (5认同)

jon*_*her 7

我发现解决这个问题最干净的方法是使用Robert Lujo推荐的psutil库:

psutil.process_iter()
Run Code Online (Sandbox Code Playgroud)

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

[p.name() for p in psutil.process_iter()]
Run Code Online (Sandbox Code Playgroud)