C# 当*任何*进程启动时收到通知,然后冻结/暂停/挂起它

C# 当*任何*进程启动时收到通知,然后冻结/暂停/挂起它,c#,windows,process,C#,Windows,Process,我正试图监控每一个进程,当它在我的机器上启动时 在进程启动后对其进行监视对于此类没有问题: class ProcessHelper { ManagementEventWatcher processListener; public ProcessHelper() { processListener = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartT

我正试图监控每一个进程,当它在我的机器上启动时

在进程启动后对其进行监视对于此类没有问题:

class ProcessHelper
{
    ManagementEventWatcher processListener;
    public ProcessHelper()
    {
        processListener = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"));
        processListener.EventArrived += new EventArrivedEventHandler(ProcessListener_ProcessStarted);
        processListener.Start();
    }

    PropertyDataCollection.PropertyDataEnumerator propEnum;
    private void ProcessListener_ProcessStarted(object sender, EventArrivedEventArgs e)
    {
        propEnum = e.NewEvent.Properties.GetEnumerator();

        while(propEnum.MoveNext())
        {
            //DoMyStuff
        }
    }

    public void stopListener()
    {
        processListener.Stop();
    }
}
但是我想在进程开始之前执行此操作,并中断其启动

我的目标是: 我想在流程启动时得到通知。我还需要它的完整文件路径。 然后我想中断开始。(我们称之为“冻结”流程)

当进程被冻结时,我想做一些检查,在这些检查之后杀死它或让它启动

//编辑

我想我发现了如何冻结进程

所以我“只是”需要知道如何在进程启动时得到通知,以便立即冻结它

使用C/C++库是没有问题的

我想用.NETFrameWOK2.0-4.0开发这个应用程序


有人知道在C#?

中这是否(以及如何)是可能的吗?如果您想在进程执行单个指令之前可靠地停止进程,则需要使用自定义驱动程序。基本上,您编写的逻辑与防病毒程序相同,因此只需遵循一个“”


WMI方法kina可以工作,但在代码挂起之前,可执行文件有时间运行一段时间。驱动程序将执行几乎相同的逻辑,但将使用进程挂钩,以便允许它在进程启动之前执行其代码。

如果您希望能够可靠地在进程执行单个指令之前停止进程,则需要使用自定义驱动程序。基本上,您正在编写与防病毒软件相同的逻辑,因此只需遵循“”您的WMI方法kina可以工作,但可执行文件在代码挂起之前有时间运行一段时间。是的,WMI太慢,因为进程可以启动。谢谢你的链接。我想这就是我开始所需要的。是时候进入C++了。