• 使用WMI监控进程启动与结束


    需要添加引用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);
    }

    运行结果:

  • 相关阅读:
    HashMap按键排序和按值排序
    LeetCode 91. Decode Ways
    LeetCode 459. Repeated Substring Pattern
    JVM
    LeetCode 385. Mini Parse
    LeetCode 319. Bulb Switcher
    LeetCode 343. Integer Break
    LeetCode 397. Integer Replacement
    LeetCode 3. Longest Substring Without Repeating Characters
    linux-网络数据包抓取-tcpdump
  • 原文地址:https://www.cnblogs.com/moonlight-zjb/p/3641881.html
Copyright © 2020-2023  润新知