Skip to content

Instantly share code, notes, and snippets.

@Romiko
Last active August 29, 2015 14:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Romiko/0e0af3a04ff017ddfcb5 to your computer and use it in GitHub Desktop.
Save Romiko/0e0af3a04ff017ddfcb5 to your computer and use it in GitHub Desktop.
Kill Process for current user
public static void KillProcesses(string processName, bool currentUserOnly, Process excludeMe = null)
{
var processes = new ManagementObjectSearcher(string.Format("SELECT * FROM Win32_Process WHERE Name='{0}'", processName)).Get();
foreach (var o in processes)
{
var process = (ManagementObject)o;
var processId = int.Parse(process["ProcessId"].ToString());
if (process["ExecutablePath"] == null) continue;
if (excludeMe != null && processId == excludeMe.Id) continue;
var ownerInfo = new object[2];
process.InvokeMethod("GetOwner", ownerInfo);
var owner = (string)ownerInfo[0];
if (currentUserOnly)
{
var windowsIdentity = WindowsIdentity.GetCurrent();
if (windowsIdentity == null) return;
var currentUser = windowsIdentity.Name;
if (currentUser.Contains(owner))
process.InvokeMethod("Terminate", null);
}
else
process.InvokeMethod("Terminate", null);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment