Heim > Backend-Entwicklung > C++ > Wie kann ich den Eigentümer eines Prozesses in C# ermitteln?

Wie kann ich den Eigentümer eines Prozesses in C# ermitteln?

DDD
Freigeben: 2025-01-17 11:51:10
Original
436 Leute haben es durchsucht

How Can I Determine the Owner of a Process in C#?

Prozesseigentümer in C#-Anwendungen identifizieren

Die Bestimmung des Benutzerkontos, das einem laufenden Prozess zugeordnet ist, ist für verschiedene C#-Anwendungen von entscheidender Bedeutung, insbesondere bei der Verwaltung von Systemressourcen oder Sicherheit. Während der integrierten Process-Klasse diese Funktionalität fehlt, bietet die Windows Management Instrumentation (WMI) eine robuste Lösung.

Verwendung von WMI zum Abrufen der Prozesseigentümerschaft

WMI bietet die Methode GetOwner zum Abrufen des Eigentümers eines Prozesses. Bevor Sie diese Methode verwenden, stellen Sie sicher, dass Sie in Ihrem Projekt einen Verweis auf System.Management.dll hinzugefügt haben.

Eigentümer anhand der Prozess-ID abrufen:

Der folgende Codeausschnitt zeigt, wie Sie den Prozessbesitzer mithilfe der Prozess-ID ermitteln:

<code class="language-csharp">public string GetProcessOwner(int processId)
{
    string query = $"Select * From Win32_Process Where ProcessID = {processId}";
    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
    {
        using (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 $"{argList[1]}\{argList[0]}";
                }
            }
        }
    }
    return "NO OWNER";
}</code>
Nach dem Login kopieren

Eigentümer anhand des Prozessnamens abrufen:

Ebenso können Sie den Eigentümer anhand des Prozessnamens identifizieren:

<code class="language-csharp">public string GetProcessOwner(string processName)
{
    string query = $"Select * from Win32_Process Where Name = \"{processName}\"";
    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
    {
        using (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 $"{argList[1]}\{argList[0]}";
                }
            }
        }
    }
    return "NO OWNER";
}</code>
Nach dem Login kopieren

Beide Methoden geben den Eigentümer im Format „DOMAINuser“ zurück. Die Verwendung von using-Anweisungen gewährleistet eine ordnungsgemäße Ressourcenentsorgung. Dieser Ansatz nutzt WMI effektiv, um die Prozessverantwortung in Ihren C#-Anwendungen zu bestimmen.

Das obige ist der detaillierte Inhalt vonWie kann ich den Eigentümer eines Prozesses in C# 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage