当前用户杀死进程

时间:2012-07-13 07:51:40

标签: c#

  

可能重复:
  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();
            }
        }

1 个答案:

答案 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();
            }
        }
    }