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
Freigeben: 2025-01-17 11:46:12
Original
372 Leute haben es durchsucht

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

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

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!

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