0

可能重复:
如何在 .NET (C#) 中终止特定用户的进程?

在我的更新程序应用程序中,我需要在更新之前杀死主程序。

我使用代码来终止更新程序应用程序中的进程,但它会终止具有该名称的所有进程,因此它会终止同一台机器上其他用户的进程。有没有办法只为当前用户杀死进程?

到目前为止,这是我的代码:

        foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
        {
            if (myProc.ProcessName == "ProgramName")
            {
                myProc.Kill();
            }
        }
4

1 回答 1

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();
            }
        }
    }
于 2012-07-13T09:24:00.347 回答