杀死一个进程甚至进入内存之前

时间:2014-03-08 12:52:36

标签: c# process system.diagnostics diagnostics

我正在使用此代码来检测是否检测到进程。我使用kill()来摆脱它。我原本想暂停它,然后用它做一些处理,这将决定是否允许进程运行,但显然我无法完成,因为它创建进程并在此之后杀死它。这是代码......

var query = new WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0, 0, 0, 0, 1),
    "TargetInstance isa \"Win32_Process\"");
      using (var watcher = new ManagementEventWatcher(query))
      {
          ManagementBaseObject mo = watcher.WaitForNextEvent();
          ManagementBaseObject o = (ManagementBaseObject)mo["TargetInstance"];
          String str = "";
          foreach (PropertyData s in o.Properties)
          {
              if(s.Name.equals("ProcessId"))
                {
                Process p = Process.GetProcessById(Int32.Parse(s.Value));
                p.Kill();
                }
          }
      }

这里的问题是,当我运行它然后在“运行”对话框中键入cmd.exe时,它会出现一秒钟然后死掉。它不应该出现甚至一秒钟。我想在它创建窗口之前捕获进程,即加载到内存中。任何人都可以建议我如何实现这一目标?

0 个答案:

没有答案