使用してシステムを。 使用してSystem.Collections.Genericを。 使用したSystem.Diagnosticsを。 使用してSystem.Linqのを。 使用してSystem.Managementを。 使用してSystem.Textのを。 使用してSystem.Threading.Tasksを。 名前空間ProcessDog.Helper { 公共の 静的な クラスProcessHelper { /// <要約> /// プロセスを強制終了し、そのすべての子、孫など /// </要約> /// <PARAM NAME = "PID" > プロセスID。</ param>の パブリック 静的 ボイドKillProcessAndChildren(int型PID) { // クローズできません'システムアイドルプロセス'。 もし(PID == 0 ) { 返します。 } ManagementObjectSearcherサーチャ = 新ManagementObjectSearcher (" SELECT * Win32_ProcessにどこからParentProcessID = " + PID)。 ManagementObjectCollectionのMOC = searcher.Get()。 foreachの(MOするManagementObject でMOC) { KillProcessAndChildren(Convert.ToInt32(MO [ " ProcessIDの" ]))。 } 試みる { プロセスPROC = Process.GetProcessById(PID)。 proc.Kill(); } キャッチ(ArgumentExceptionが) { // プロセスはすでに終了しました。 } } } }