如何监控Windows中的进程/程序执行?

Niy*_*yaz 10 windows events executable process

我们正在尝试开发一个可以监视在Windows机器上执行的程序/进程的小应用程序.

如果程序/进程不应该运行,则应该阻止它.它的工作原理类似于防病毒.

这是基本的想法.

我想知道挂钩操作系统的方法,以获得有关尝试在机器中运行的每个程序/进程的通知.

Rob*_*upt 11

最简单的方法是使用WMI.特别是监视Win32_ProcessStartTrace.这比Win32_Process更好,因为它设置为使用事件,而Win32_Process需要更多CPU密集的轮询.以下是如何在C#中完成的.首先确保将System.Management设置为项目的参考.

    public System.Management.ManagementEventWatcher mgmtWtch;

    public Form1()
    {
        InitializeComponent();
        mgmtWtch = new System.Management.ManagementEventWatcher("Select * From Win32_ProcessStartTrace");
        mgmtWtch.EventArrived += new System.Management.EventArrivedEventHandler(mgmtWtch_EventArrived);
        mgmtWtch.Start();
    }

    void mgmtWtch_EventArrived(object sender, System.Management.EventArrivedEventArgs e)
    {
        MessageBox.Show((string)e.NewEvent["ProcessName"]);
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        mgmtWtch.Stop();
    }
Run Code Online (Sandbox Code Playgroud)

每次启动新进程时,代码都会生成一个消息框.从那里你可以检查白名单/黑名单并采取适当的行动.

  • 不幸的是,WMI 似乎比进程创建晚 5 秒才发送通知。对于实时通知或执行短期任务没有用处。 (2认同)