python - python中的Windows实时进程创建监视器
问题描述
我正在尝试在 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 项目的文档,但无法使其正常工作。
解决方案
答案在这里: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)
推荐阅读
- java - 复杂类型中序列的 JAXB 外部绑定文件 xpath
- javascript - 如何在 Reactjs 中删除元素 onclick?
- aws-lambda - 通过 AWS greengrass 核心进行设备通信
- php - 无法加载您的默认控制器。实时代码点火器 hmvc 站点中的错误
- android - 创建活动并绘制视图后,如何在 Android 中以编程方式切换工具栏样式?
- php - 使用 mysqli 一页插入记录
- wordpress - 当用户已经存在于wordpress中时,用户注册rest API状态500
- c++ - Eigen slerp 导致读取访问冲突 (C++/OpenGL)
- c - 从内存中加载检查证书
- sql - 从一列结构化查询语言中获取平均值