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)
我发现解决这个问题最干净的方法是使用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)
归档时间: |
|
查看次数: |
50284 次 |
最近记录: |