我使用的是Windows 7,我想监控新的进程创建事件。(例如,获取所创建的每个进程的条目,以及有关该进程的完整详细信息。)我在Procmon中成功地做到了这一点,但我想在shell中完成这项工作,并在没有GUI的情况下获得文本输出。
是否有CLI命令可以做到这一点?例如,我可以告诉它“请列出具有某某路径的某某类型的所有事件”,它将无限期地运行,并将这些进程的详细信息写入标准输出?
发布于 2018-10-18 20:07:33
您可以使用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();
}
}
}
}https://stackoverflow.com/questions/52725830
复制相似问题