Identification des propriétaires de processus dans les applications C#
La détermination du compte utilisateur associé à un processus en cours d'exécution est essentielle pour diverses applications C#, notamment lors de la gestion des ressources système ou de la sécurité. Bien que la classe Process
intégrée ne dispose pas de cette fonctionnalité, Windows Management Instrumentation (WMI) fournit une solution robuste.
Utilisation de WMI pour la récupération de la propriété des processus
WMI propose la méthode GetOwner
pour récupérer le propriétaire d'un processus. Avant d'utiliser cette méthode, assurez-vous d'avoir ajouté une référence à System.Management.dll
dans votre projet.
Récupération du propriétaire par ID de processus :
L'extrait de code suivant montre comment obtenir le propriétaire du processus à l'aide de l'ID du processus :
<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>
Récupération du propriétaire par nom de processus :
De même, vous pouvez identifier le propriétaire en fonction du nom du processus :
<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>
Les deux méthodes renvoient le propriétaire au format "DOMAINuser". L'utilisation des instructions using
garantit une élimination appropriée des ressources. Cette approche exploite efficacement WMI pour déterminer la propriété des processus au sein de vos applications C#.
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!