Maison >développement back-end >C++ >Comment trouver le propriétaire d'un processus en C# à l'aide de WMI ?

Comment trouver le propriétaire d'un processus en C# à l'aide de WMI ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-17 11:46:12373parcourir

How to Find the Owner of a Process in C# Using WMI?

Récupération des informations sur la propriété du processus en C# via 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.

Identification du propriétaire à l'aide de l'ID de processus

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>

Identification du propriétaire à l'aide du nom du processus

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!

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