【问题标题】:Windows real time process creation monitor in pythonpython中的Windows实时进程创建监视器
【发布时间】: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

这可行,但如上所述,不适用于短暂的生命过程,我使用了 WMIPyMI,它们声称是更快的实现,但在两种情况下我得到了相同的结果。

我已经测试了我在网上找到的使用事件而不是轮询的 C# 实现:

var startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"));
startWatch.EventArrived += new EventArrivedEventHandler(startWatch_EventArrived);
startWatch.Start();

这效果更好,有没有办法在 Python 中使用它?我查看了两个 WMI 项目的文档,但无法使其工作相同。

【问题讨论】:

    标签: python wmi


    【解决方案1】:

    答案在这里:http://timgolden.me.uk/python/wmi/wmi.html

    c = wmi.WMI ()
    
    raw_wql = "SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_Process'"
    watcher = c.watch_for (raw_wql=raw_wql)
    while 1:
      process_created = watcher()
      print(process_created.Name)
    

    c = wmi.WMI ()
    
    watcher = c.watch_for (
      notification_type="Creation",
      wmi_class="Win32_Process",
      delay_secs=2,
    )
    
    while 1:
      process_created = watcher()
      print(process_created.Name)
      print(process_created)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 2019-09-14
      • 1970-01-01
      • 2010-12-31
      相关资源
      最近更新 更多