Версия командной строки Procmon - PullRequest
0 голосов
/ 09 октября 2018

Я использую Windows 7, и я хотел бы отслеживать новые события Process Create.(т.е. получить запись для каждого созданного процесса с полной информацией о нем.) Мне удалось сделать это в Procmon, но я хочу сделать это в оболочке и получить вывод текста без графического интерфейса.

Есть команда CLI, которая делает это?например, я мог бы сказать ему: «Пожалуйста, перечислите все события такого-то типа с таким-то путем», и он будет работать бесконечно, записывая детали этих процессов в стандартный вывод?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Wtrace в порядке: https://github.com/lowleveldesign/wtrace/

Я смог использовать его, чтобы найти создание нового процесса и увидеть аргументы командной строки.

0 голосов
/ 18 октября 2018

Вы можете создать свой собственный файл с помощью пакета Microsoft.Diagnostics.Tracing.TraceEvent .Это оболочка для ETW (Event Tracing для Windows) событий, разработанная моим Microsoft.

Вот пример кода консольного приложения 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();
            }
        }
    }
}
...