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>
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>
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!