首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Procmon的命令行版本

Procmon的命令行版本
EN

Stack Overflow用户
提问于 2018-10-10 00:50:27
回答 1查看 1.3K关注 0票数 3

我使用的是Windows 7,我想监控新的进程创建事件。(例如,获取所创建的每个进程的条目,以及有关该进程的完整详细信息。)我在Procmon中成功地做到了这一点,但我想在shell中完成这项工作,并在没有GUI的情况下获得文本输出。

是否有CLI命令可以做到这一点?例如,我可以告诉它“请列出具有某某路径的某某类型的所有事件”,它将无限期地运行,并将这些进程的详细信息写入标准输出?

EN

回答 1

Stack Overflow用户

发布于 2018-10-18 20:07:33

您可以使用Microsoft.Diagnostics.Tracing.TraceEvent nuget package构建自己的应用程序。它是ETW (Event Tracing for Windows)事件的包装器,并且是由我的微软开发的。

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

代码语言:javascript
复制
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();
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52725830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档