我正在使用此代码来检测是否检测到进程。我使用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时,它会出现一秒钟然后死掉。它不应该出现甚至一秒钟。我想在它创建窗口之前捕获进程,即加载到内存中。任何人都可以建议我如何实现这一目标?