【发布时间】:2020-10-18 19:48:58
【问题描述】:
我正在尝试在 Python 中创建一个“实时”进程创建监视器,但无法使其正常工作。
我曾尝试为此使用 WMI,但似乎错过了短暂的生命过程并且从未报告过,我猜我在 Python 中使用的 WMI 技术是基于“轮询”的,这就是我所拥有的现在:
import wmi
c = wmi.WMI()
process_watcher = c.Win32_Process.watch_for("creation")
while True:
new_process = process_watcher()
print new_process.Caption
这可行,但如上所述,不适用于短暂的生命过程,我使用了 WMI 和 PyMI,它们声称是更快的实现,但在两种情况下我得到了相同的结果。
我已经测试了我在网上找到的使用事件而不是轮询的 C# 实现:
var startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"));
startWatch.EventArrived += new EventArrivedEventHandler(startWatch_EventArrived);
startWatch.Start();
这效果更好,有没有办法在 Python 中使用它?我查看了两个 WMI 项目的文档,但无法使其工作相同。
【问题讨论】: