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
Freigeben: 2025-01-17 11:32:10
Original
232 Leute haben es durchsucht

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";
}
Nach dem Login kopieren

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";
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage