C# Kill Process

C#에서 Kill Process사용시 Child프로세스로 변경된 Process는 PID가 달라 Kill이 안되는 오류가 발생한다.

아래와 같이 WMI를 이용하여 프로세스를 가져오면 정확한 PID를 읽어서 처리할 수 있다.

private static void KillProcessWMI(string szProcessName)
{
SelectQuery query = new SelectQuery(“Win32_Process”);
query.Condition = “Name='” + szProcessName + “‘”;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection moc = searcher.Get();
foreach (ManagementObject mo in moc)
{
int pid = Convert.ToInt32(mo[“ProcessID”]);
try
{
Process proc = Process.GetProcessById(pid);
proc.Kill();
}
catch(Exception)
{
}
}
}