命令行版本的Procmon

时间:2018-10-09 16:50:27

标签: windows process sysinternals procmon

我正在使用Windows 7,并且想监视新的Process Create事件。 (即,为创建的每个进程获取一个条目,并提供有关它的完整详细信息。)我在Procmon中成功完成了此操作,但是我想在shell中执行此操作,并在没有GUI的情况下获取文本输出。

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

2 个答案:

答案 0 :(得分:0)

您可以使用Microsoft.Diagnostics.Tracing.TraceEvent nuget package构建自己的数据库。它是ETW (Event Tracing for Windows)事件的包装,并且开发了我的Microsoft。

以下是一些示例C#控制台应用程序代码,该代码显示所有进程的Start和Stop事件:

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();
            }
        }
    }
}

答案 1 :(得分:-1)

Wtrace可以:https://github.com/lowleveldesign/wtrace/

我能够使用它来查找新进程的创建并查看命令行参数。