Heim >Backend-Entwicklung >C++ >Wie kann ich den Eigentümer eines C#-Prozesses anhand seiner ID oder seines Namens ermitteln?

Wie kann ich den Eigentümer eines C#-Prozesses anhand seiner ID oder seines Namens ermitteln?

Barbara Streisand
Barbara StreisandOriginal
2025-01-17 11:32:10234Durchsuche

How Can I Determine the Owner of a C# Process Using its ID or Name?

Bestimmen des Prozessbesitzes in C#

Das Ermitteln des Eigentümers eines Prozesses ist eine wesentliche Aufgabe bei der Verwaltung von Systemressourcen. In diesem Zusammenhang suchen Sie nach einer Möglichkeit, den Besitzer eines Prozesses namens „MyApp.exe“ zu identifizieren, selbst nachdem eine Liste von Prozessen abgerufen wurde.

Die Process-Klasse stellt zwar grundlegende Prozessinformationen bereit, ihr fehlt jedoch die Fähigkeit um den Besitz zu bestimmen. Um dieser Herausforderung zu begegnen, kann Windows Management Instrumentation (WMI) eingesetzt werden. Durch Hinzufügen eines Verweises auf System.Management.dll können Sie den einem Prozess zugeordneten Benutzer ermitteln.

Methode 1: Nach Prozess-ID

public 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 DOMAIN\user
            return argList[1] + "\" + argList[0];
        }
    }

    return "NO OWNER";
}

Methode 2: Nach Prozessname

public string GetProcessOwner(string processName)
{
    string query = "Select * from Win32_Process Where Name = \"" + processName + "\"";
    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 DOMAIN\user
            string owner = argList[1] + "\" + argList[0];
            return owner;       
        }
    }

    return "NO OWNER";
}

Mithilfe dieser WMI-basierten Methoden können Sie den Eigentümer effektiv ermitteln eines Prozesses anhand seiner Prozess-ID oder seines Namens. Diese Informationen können für die Analyse von Systemprozessen und die entsprechende Anpassung Ihrer Anwendungen von unschätzbarem Wert sein.

Das obige ist der detaillierte Inhalt vonWie kann ich den Eigentümer eines C#-Prozesses anhand seiner ID oder seines Namens ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn