列出 64 位 Windows 上正在运行的进程
- 2025-02-28 08:24:00
- admin 原创
- 71
问题描述:
我正在编写一个小 Python 脚本,它将从我正在运行的 Windows 虚拟机中获取信息。
目前,我可以使用以下方法列出 32 位 XP 机器上的进程:
http://code.activestate.com/recipes/305279/
是否有可能以某种方式检测正在运行的 Windows 版本并执行不同的方法在 64 位机器上获取进程,我正在尝试从 64 位 Vista 和 64 位 Windows 7 获取进程。
有什么想法吗?
解决方案 1:
activestate 上有另一个配方可以做类似的事情,但是使用性能数据助手库 (PDH)。
我已经在我的 Windows 7 64 位机器上测试过了并且它可以在那里运行 - 所以推测相同的功能在 32 位和 64 位 Windows 上都可以运行。
您可以在这里找到食谱: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:
如果您不想依赖任何额外安装的模块,那么您可以解析wmic的输出,例如:
c:> wmic process get description,executablepath
...
explorer.exe C:Windowsexplorer.exe
cmd.exe C:WindowsSysWOW64cmd.exe
conhost.exe C:Windowssystem32conhost.exe
...
参考:http ://geekpedia.wordpress.com/2008/08/18/use-command-line-to-track-windows-processes/
解决方案 3:
我发现解决这个问题最干净的方法是使用Robert Lujo 推荐的psutil库:
psutil.process_iter()
请注意,它返回一个生成器对象,每次发出一个进程对象。例如,如果您需要进程名称列表,您可以执行以下操作:
[p.name() for p in psutil.process_iter()]
解决方案 4:
出于类似目的,我使用了psutil库。一些提示:
列出具有
psutil.pids()
(参考)的进程检查流程信息
process = psutil.Process(pid)
(参考)做
process.kill
或process.terminate()
在 Windows 上安装pip
-将从源代码进行安装(这意味着编译),因此您可能需要从https://pypi.python.org/pypi/psutil/#downloads下载二进制安装。
解决方案 5:
您应该能够通过在每个虚拟机中公开Windows Management Instrumentation来实现这一点。此工具可让您访问大量系统数据(包括进程),请参阅http://technet.microsoft.com/en-us/library/cc757287%28WS.10%29.aspx
您应该能够使用popen
前面链接中的某个命令来获取您正在寻找的信息。
扫码咨询,免费领取项目管理大礼包!