string processName = "ProcessName.exe";
string userName = "UserName";
Process[] processes = Process.GetProcessesByName(processName);
foreach (Process process in processes)
{
string processOwner = GetProcessOwner(process.Id);
if (processOwner.Equals(userName, StringComparison.OrdinalIgnoreCase))
{
process.Kill();
}
}
private static string GetProcessOwner(int processId)
{
string query = "Select * From Win32_Process Where ProcessID = " + processId;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processList = searcher.Get();
foreach (ManagementObject obj in processList)
{
string[] argList = new string[] { string.Empty, string.Empty };
int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
if (returnVal == 0)
{
return argList[0];
}
}
return "N/A";
}