Heim >Backend-Entwicklung >C++ >Wie finde ich mithilfe von WMI den Besitzer eines Prozesses in C#?

Wie finde ich mithilfe von WMI den Besitzer eines Prozesses in C#?

Linda Hamilton
Linda HamiltonOriginal
2025-01-17 11:46:12373Durchsuche

How to Find the Owner of a Process in C# Using WMI?

Prozesseigentumsinformationen in C# über WMI abrufen

Die C#-Process-Klasse gibt den Prozessbesitz nicht direkt offen. Wir können jedoch die Windows-Verwaltungsinstrumentation (WMI) nutzen, um dieses entscheidende Detail zu erhalten. Denken Sie daran, in Ihrem Projekt einen Verweis auf System.Management.dll hinzuzufügen.

Identifizierung des Eigentümers anhand der Prozess-ID

Diese Methode ruft den Prozessbesitzer anhand seiner ID ab:

<code class="language-csharp">public string GetProcessOwner(int processId)
{
    string query = $"Select * From Win32_Process Where ProcessID = {processId}";
    using (var searcher = new ManagementObjectSearcher(query))
    {
        using (var processList = searcher.Get())
        {
            foreach (ManagementObject obj in processList)
            {
                string[] ownerInfo = new string[2];
                int result = Convert.ToInt32(obj.InvokeMethod("GetOwner", ownerInfo));
                if (result == 0)
                {
                    return $"{ownerInfo[1]}\{ownerInfo[0]}"; // DOMAIN\user format
                }
            }
        }
    }
    return "NO OWNER";
}</code>

Identifizierung des Eigentümers anhand des Prozessnamens

Diese Alternative verwendet den Prozessnamen, um den Eigentümer zu finden:

<code class="language-csharp">public string GetProcessOwner(string processName)
{
    string query = $"Select * from Win32_Process Where Name = '{processName}'";
    using (var searcher = new ManagementObjectSearcher(query))
    {
        using (var processList = searcher.Get())
        {
            foreach (ManagementObject obj in processList)
            {
                string[] ownerInfo = new string[2];
                int result = Convert.ToInt32(obj.InvokeMethod("GetOwner", ownerInfo));
                if (result == 0)
                {
                    return $"{ownerInfo[1]}\{ownerInfo[0]}"; // DOMAIN\user format
                }
            }
        }
    }
    return "NO OWNER";
}</code>

Diese Funktionen bieten eine robuste Möglichkeit zur Bestimmung der Prozessverantwortung und liefern wertvolle Erkenntnisse für die Systemverwaltung und Sicherheitsanalyse. Die Verwendung von using-Anweisungen gewährleistet eine ordnungsgemäße Ressourcenentsorgung.

Das obige ist der detaillierte Inhalt vonWie finde ich mithilfe von WMI den Besitzer eines Prozesses in C#?. 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