Sprache: C#
Die folgende Funktion beendet alle Prozesse, die nicht mehr reagieren.
benötigte Namespaces:
System.Diagnostics
System.Threading
Funktion wurde geupdatet (siehe Kommentar).
/// <summary>
/// Beendet alle Prozesse, die nicht mehr reagieren.
/// </summary>
/// <returns>
/// Zeichenkette, die angibt, welche Processe beenden wurden
/// und welche nicht beendet werden konnten.
/// </returns>
public static String QuitAllNotRespondingProcesses()
{
StringBuilder stringBuilder = new StringBuilder();
foreach (Process process in Process.GetProcesses())
{
if (!process.Responding)
{
try
{
process.PriorityClass = ProcessPriorityClass.Idle;
Thread.Sleep(1000);
process.Kill();
stringBuilder.AppendLine(process.ProcessName + " wurde beendet");
}
catch (Exception)
{
stringBuilder.AppendLine(process.ProcessName + " konnte nicht beendet werden");
}
}
}
return stringBuilder.ToString();
}
/// <summary>
/// Beendet alle Prozesse, die nicht mehr reagieren.
/// </summary>
/// <returns>
/// Zeichenkette, die angibt, welche Processe beenden wurden
/// und welche nicht beendet werden konnten.
/// </returns>
public static String QuitAllNotRespondingProcesses()
{
StringBuilder stringBuilder = new StringBuilder();
foreach (Process process in Process.GetProcesses())
{
if (!process.Responding)
{
try
{
process.PriorityClass = ProcessPriorityClass.Idle;
Thread.Sleep(1000);
process.Kill();
stringBuilder.AppendLine(process.ProcessName + " wurde beendet");
}
catch (Exception)
{
stringBuilder.AppendLine(process.ProcessName + " konnte nicht beendet werden");
}
}
}
return stringBuilder.ToString();
}
Alte URL:
/snippet/alle-haengenden-prozesse-beenden/726
Leider ist das nicht so ganz richtig. Hängende Prozesse die in einer hohen Priorität laufen (z.B. Realtime) kann man auf diese Art und weise nicht beenden.
Hierzu muss man zuerst einmal die Priorität herunterstufen – dann kann man die Prozese beenden.
Damit das auch gelingt, muss man allerdings über die entsprechenden Administativen Rechte verfügen.