需要添加引用System.Management

代码:

static void Main(string[] args)
{
//创建WQL事件查询,监视进程开启
var qCreate = new WqlEventQuery("__InstanceCreationEvent", TimeSpan.FromSeconds(1), "TargetInstance ISA 'Win32_Process'");
//创建WQL事件查询,监视进程关闭
var qDelete = new WqlEventQuery("__InstanceDeletionEvent", TimeSpan.FromSeconds(1), "TargetInstance ISA 'Win32_Process'");

//创建事件查询的侦听器(ManagementEventWatcher)
var wCreate = new ManagementEventWatcher(qCreate);
var wDelete = new ManagementEventWatcher(qDelete);

//事件注册
wCreate.EventArrived += (sender, e) =>
{
Console.WriteLine("开启进程:{0}", GetInfo(e.NewEvent));
};
wDelete.EventArrived += (sender, e) =>
{
Console.WriteLine("关闭:{0}", GetInfo(e.NewEvent));
};

//开始异步侦听
wCreate.Start();
wDelete.Start();

Console.WriteLine("按任意键结束");
Console.ReadKey();//*/
}

//输出事件对应的ManagementBaseObject(本例中的Win32_Process实例)的信息

static string GetInfo(ManagementBaseObject mobj)

{
var instance = (ManagementBaseObject)mobj["TargetInstance"];
return string.Format("{0} - {1} - {2}", instance["Name"],instance["ProcessId"], DateTime.Now);
}

运行结果:

使用WMI监控进程启动与结束的更多相关文章

  1. Windows/Linux用户态监控进程启动事件方法

    catalogue . windows wmi监控进程启动 . linux netlink监控进程启动 1. windows wmi监控进程启动 from threading import Threa ...

  2. 用shell脚本监控进程是否存在 不存在则启动的实例

    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]th ...

  3. 主机性能监控之wmi 获取进程信息

    标 题: 主机性能监控之wmi 获取进程信息作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990499.html 欢迎转帖 请保持文本完整并注明出处 仅 ...

  4. Linux编程 7 (实时监测进程 top, 结束进程kill,killall)

    一. 实时监测进程 top 在一篇里讲到ps命令在收集进程信息时非常有用,但它只能显示某个特定时间点的信息.想要观察那些频繁换进换出的内存进程趋势,用top命令是合适的.使用top命令如下图所示: 在 ...

  5. python黑帽子学习笔记1:pyqt5 designer+wmi实现进程监视器

    环境说明:python3.6 所需要模块:wmi.pyqt5.pythonMagick 先放上一张成品效果图,如图所示: 界面利用pyqt5的designer实现,画好界面如下图所示: 画好后,保存好 ...

  6. Linux进程启动/指令执行方式研究

    1. 通过glibc api执行系统指令 0x1:system() glibc api system是linux系统提供的函数调用之一,glibc也提供了对应的封装api. system函数的原型为: ...

  7. Nginx之监控进程和工作进程

    1. 函数调用分析 在开启 master 的情况下,多进程模型的下的入口函数为 ngx_master_process_cycle,如下: int mian() { ... if (ngx_proces ...

  8. 【系统篇】从C/C++语言到进程启动背后的故事

    我们需要运行一个程序或者软件,双击之即可完成.不过从你双击到程序的窗口产生的这“短暂”的时间内,Windows为你做了很多的工作. 首先,系统有一个进程监测到了你的双击操作,这个进程就是系统shell ...

  9. 使用supervisor监控进程

    在linux下监控进程,可以使用inittab,最近找到了supervisor,也很好用,记录一下:1.系统要安装python,并安装与之对应的setuptools,下载地址在此2.安装:# sh s ...

随机推荐

  1. IOS tableView 自定义cell 多行时 文字重复现象

    今天写了一个demo,有一个问题,有很多cell,但是超过一页后往下翻,发现文字有重叠现象, cell用的是重用机制,按说不会这样,最终解决的方案: 勾选这个,clears graphics cont ...

  2. 我们应该如何去了解JavaScript引擎的工作原理 系列

    http://www.nowamagic.net/librarys/veda/detail/1579

  3. new的例子

    12.6 编写函数,返回一个动态分配的int的vector.将此vector传递给另一个函数,这个函数读取标准输入,将读入的值保存在vector元素中.再将vector传递给另一个函数,打印读入的值. ...

  4. QT线程(一):线程类

      线程之间共享数据,但又单独执行: QT线程QThread是平台无关的: 通常主线程从main开始执行,而在主线程中创建其他线程,其他线程派生于QThread: 1.线程优先级 总共8个优先级:线程 ...

  5. cocos2dx下最大纹理大小取决于平台

    原文:http://www.cocos2d-x.org/wiki/Max_size_of_textures_in_cocos2d-x_depends_on_each_platform 在理论上,coc ...

  6. cocos2dx shader

    http://www.oschina.net/question/565065_79818 Cocos2d-x 2.0 -- 从 点,线,面学起 http://blog.csdn.net/dawn_mo ...

  7. 常用数据库的驱动类/URL/默认端口

    常用数据库的驱动类/URL/默认端口 1.Oracle:     格式:     驱动:oracle.jdbc.driver.OracleDriver     URL:jdbc:oracle:thin ...

  8. SqlBulkCopy高效能批量插入SQL SERVER

    what SqlBulkCopy是.NET提供的用来批量插入数据的一个类,特别是将内存中的数据一次性插入到数据库,目前只能插入到SQL SERVER数据库,数据源可以是DataTable.IDataR ...

  9. Linux 释放cached内存

    使用free -m 查看系统使用的内存情况: # free -m             total      used      free      shared      buffers     ...

  10. spinner中的onNothingSelected方法到底什么时候调用?

    这个东东大家在开发中可能不太能用到,所以总是容易被忽略,由于工作原因,我最近琢磨了一下onNothingSelected方法的调用时机问题,其实很简单,只要我们稍微看一下源码就明白了: /** * C ...