Maison >développement back-end >C++ >Comment déterminer la propriété des processus en C# à l'aide de WMI ?

Comment déterminer la propriété des processus en C# à l'aide de WMI ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-17 11:41:09237parcourir

How to Determine Process Ownership in C# Using WMI?

Utiliser WMI pour identifier les propriétaires de processus dans les applications C#

Déterminer efficacement la propriété des processus est crucial pour diverses applications C#, en particulier celles axées sur la gestion et la sécurité des ressources système. Ce guide montre comment y parvenir à l'aide de la bibliothèque Windows Management Instrumentation (WMI).

Exploiter WMI pour la propriété des processus

WMI propose des outils robustes pour gérer et surveiller les composants du système, y compris les processus. Voici comment utiliser WMI pour identifier les propriétaires de processus :

1. Ajout de la référence System.Management.dll

Dans Visual Studio, accédez aux Références de votre projet dans l'Explorateur de solutions. Faites un clic droit, sélectionnez Ajouter une référence... et parcourez pour ajouter System.Management.dll.

2. Récupération du propriétaire du processus via l'ID du processus

L'extrait de code suivant récupère le propriétaire en fonction d'un ID de processus fourni :

<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[] argList = { string.Empty, string.Empty };
                int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
                if (returnVal == 0)
                {
                    return $"{argList[1]}\{argList[0]}"; // DOMAIN\user format
                }
            }
        }
    }
    return "NO OWNER";
}</code>

3. Récupération du propriétaire du processus via le nom du processus

Cette méthode identifie le propriétaire à l'aide du nom du processus :

<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[] argList = { string.Empty, string.Empty };
                int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
                if (returnVal == 0)
                {
                    return $"{argList[1]}\{argList[0]}"; // DOMAIN\user format
                }
            }
        }
    }
    return "NO OWNER";
}</code>

Ces fonctions offrent un moyen simple d'obtenir des informations sur la propriété des processus, améliorant ainsi les capacités de gestion des processus de votre application C#. Notez l'utilisation des instructions using pour une bonne gestion 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!

Déclaration:
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