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 に答える