Maison >développement back-end >C++ >Comment trouver le propriétaire d'un processus en C# à l'aide de WMI ?
La classe C# Process
ne révèle pas directement la propriété du processus. Cependant, nous pouvons exploiter Windows Management Instrumentation (WMI) pour obtenir ce détail crucial. Pensez à ajouter une référence à System.Management.dll
dans votre projet.
Cette méthode récupère le propriétaire du processus à partir de son ID :
<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>
Cette alternative utilise le nom du processus pour trouver le propriétaire :
<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>
Ces fonctions fournissent un moyen robuste de déterminer la propriété des processus, offrant des informations précieuses pour l'administration du système et l'analyse de la sécurité. L'utilisation d'instructions using
garantit une élimination appropriée des ressources.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!