查找进程的方法:
1.通过System.Diagnostics.Process.GetProcesses()方法能够获得系统内各进程的数组
public static
bool KillProcess(string pProcessName)
{
Process[] processes;
processes= Process.GetProcessesByName(processName);
if (processes.Length = 0 ) return
false;
foreach (Process p in processes)
{
p.Kill();
//RunCmd("ntsd -c q -p " + p.Id);
}
return
true;
}
2.通过ManagementObjectSearcher 类
此类是用于检索管理信息的较为常用的入口点之一。例如,它可以用于枚举系统中的所有磁盘驱动器、网络适配器、进程及更多管理对象,或者用于查询所有处于活动状态的网络连接以及暂停的服务等。在实例化之后,此类的实例可以接受在
ObjectQuery 或其派生类中表示的 WMI 查询作为输入,并且还可以选择接受一个 ManagementScope(表示执行查询时所在的 WMI 命名空间)。它还可以接受
EnumerationOptions 中的其他高级选项。当调用此对象的 Get 方法时,ManagementObjectSearcher 在指定的范围内执行给定的查询,并返回与
ManagementObjectCollection 中的查询匹配的管理对象的集合。
public static
bool KillProcess(string pProcessName)
{
ManagementObjectCollection objects = new ManagementObjectSearcher("SELECT * FROM Win32_Process").Get();
foreach (ManagementObject item
in objects)
{
string str = item["Name"].ToString();
if (str.Trim().ToUpper() == pProcessName.Trim().ToUpper())
{
string[] args =
new string[] {
"0" };
item.InvokeMethod("Terminate", args);
return
true;
}
}
return
false;
}