代码之家  ›  专栏  ›  技术社区  ›  Ram Rachum

Procmon的命令行版本

  •  3
  • Ram Rachum  · 技术社区  · 6 年前

    我使用的是Windows7,我想监视新的进程创建事件(i、 我在Procmon中成功地做到了这一点,但是我想在shell中做到这一点,并且在没有GUI的情况下获得文本输出。

    是否有CLI命令可以执行此操作?e、 g.我可以告诉它“请列出所有路径为某某的某某类型的事件”,它将无限期运行,并将这些进程的详细信息写入stdout?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Simon Mourier    6 年前

    您可以使用 Microsoft.Diagnostics.Tracing.TraceEvent nuget package ETW (Event Tracing for Windows) 事件,它开发了我的微软。

    下面是一些示例C#控制台应用程序代码,用于显示所有进程启动和停止事件:

    using System;
    using Microsoft.Diagnostics.Tracing.Parsers;
    using Microsoft.Diagnostics.Tracing.Session;
    
    namespace ProcMon
    {
        class Program
        {
            static void Main(string[] args)
            {
                if (TraceEventSession.IsElevated() != true)
                {
                    Console.WriteLine("To turn on ETW events you need to be Administrator, please run from an Admin process.");
                    return;
                }
    
                using (var session = new TraceEventSession("whatever"))
                {
                    // handle console CTRL+C gracefully
                    Console.CancelKeyPress += (sender, e) => session.Stop();
    
                    // we filter on events we need
                    session.EnableKernelProvider(KernelTraceEventParser.Keywords.Process);
    
                    session.Source.Kernel.ProcessStart += data =>
                    {
                        Console.WriteLine("START Id:" + data.ProcessID + " Name:" + data.ProcessName);
                    };
    
                    session.Source.Kernel.ProcessStop += data =>
                    {
                        // stop has no name
                        Console.WriteLine("STOP Id:" + data.ProcessID);
                    };
    
                    // runs forever, press CTRL+C to stop
                    session.Source.Process();
                }
            }
        }
    }
    
    推荐文章