Maison > développement back-end > C++ > Comment puis-je déterminer le propriétaire d'un processus en C# ?

Comment puis-je déterminer le propriétaire d'un processus en C# ?

DDD
Libérer: 2025-01-17 11:51:10
original
436 Les gens l'ont consulté

How Can I Determine the Owner of a Process in C#?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal