[.Net] Terminer un processus et ses processus enfants

Dotnet Kill Process

Dans le framework DotNet, la classe Process (System.Diagnostics) permet de faire un certain nombre d’actions sur les processus: créer un processus, lister les processus par nom ou pid, ou bien encore tuer un processus.

La classe Process bien que très complète ne nous permet pas de tuer un processus et les processus enfants (child process) qui y sont associés.

La fonction suivante utilise la récursivité et WMI pour lister l’ensemble des processus enfants pour pouvoir tous les tuer (killer).

'Fonction qui tue un processus et ses children en fonction de son pid
Public Sub KillProcessAndChildren(ByVal pid As Integer)
    Dim m As New Management.ManagementObjectSearcher("select ProcessId from Win32_Process where ParentProcessId=" & pid)
    Dim c As Management.ManagementObjectCollection = m.Get()
    For Each itm As Management.ManagementBaseObject In c
        KillProcessAndChildren(Convert.ToInt32(itm("ProcessId")))
    Next
    Process.GetProcessById(pid).Kill()
End Sub

Leave a Reply

Your email address will not be published. Required fields are marked *