可能重复:
How do you kill a process for a particular user in .NET (C#)?
在我的更新程序应用程序中,我需要在更新之前终止主程序。
我使用代码来终止updater应用程序中的进程,但是它会杀死具有该名称的所有进程,因此它会杀死同一台机器上的其他用户的进程。有没有办法只杀死当前用户的进程?
到目前为止,这是我的代码:
foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
{
if (myProc.ProcessName == "ProgramName")
{
myProc.Kill();
}
}
答案 0 :(得分:0)
如果你不介意WMI,你可以使用Windows Management Instrumentation(WMI)来达到你的要求
示例:
System.Management.ManagementObjectSearcher Processes = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_Process Where Name ='notepad.exe' ");
string user = "JohnDoe";
foreach (System.Management.ManagementObject process in Processes.Get())
{
if (process["ExecutablePath"] != null)
{
string[] OwnerInfo = new string[2];
process.InvokeMethod("GetOwner", (object[])OwnerInfo);
if (OwnerInfo[0] == user)
{
process.Delete();
}
}
}