Windows事件跟踪(ETW)不会从记事本捕获读取事件

问题描述 投票:0回答:1

我使用点击数过滤器:

session.EnableKernelProvider(KernelTraceEventParser.Keywords.DiskFileIO |
                                             KernelTraceEventParser.Keywords.FileIOInit |
                                             KernelTraceEventParser.Keywords.FileIO);

我订阅了DiskIOReadFileIORead事件。

如果我通过记事本打开文件,则不会发生该事件。

但是,如果我通过记事本++打开文件,则会发生这种情况。

c# windows etw
1个回答
0
投票

我尝试使用与您在问题中发布的配置相同的配置,并且在打开记事本时可以看到事件触发器

            using (var kernelSession = new TraceEventSession(KernelTraceEventParser.KernelSessionName))
            {
                Console.CancelKeyPress += delegate (object sender, ConsoleCancelEventArgs e) { kernelSession.Dispose(); };

                kernelSession.EnableKernelProvider
                    ( KernelTraceEventParser.Keywords.DiskFileIO |
                    KernelTraceEventParser.Keywords.FileIO |
                    KernelTraceEventParser.Keywords.FileIOInit
                    );


                var kernel = kernelSession.Source.Kernel;
                kernel.FileIORead += HandleFileIoRead;
                kernel.DiskIORead += HanleDiskIORead;



                kernelSession.Source.Process();
            }

        private static void HandleFileIoRead(FileIOReadWriteTraceData data)
        {

          if(data.ProcessName=="notepad")
                Console.WriteLine("Hellonotepad" +data);

        }

参考:Medium Article

© www.soinside.com 2019 - 2024. All rights reserved.