Maison >développement back-end >C++ >Comment puis-je déterminer le propriétaire d'un processus C# à l'aide de son ID ou de son nom ?

Comment puis-je déterminer le propriétaire d'un processus C# à l'aide de son ID ou de son nom ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-17 11:32:10234parcourir

How Can I Determine the Owner of a C# Process Using its ID or Name?

Détermination de la propriété d'un processus en C#

Obtenir le propriétaire d'un processus est une tâche essentielle lors de la gestion des ressources système. Dans ce contexte, vous cherchez un moyen d'identifier le propriétaire d'un processus nommé "MyApp.exe", même après avoir récupéré une liste de processus.

Bien que la classe Process fournisse des informations de base sur le processus, elle n'a pas la capacité pour déterminer la propriété. Pour relever ce défi, Windows Management Instrumentation (WMI) peut être utilisé. En ajoutant une référence à System.Management.dll, vous pouvez obtenir l'utilisateur associé à un processus.

Méthode 1 : Par ID de processus

public string GetProcessOwner(int processId)
{
    string query = "Select * From Win32_Process Where ProcessID = " + processId;
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
    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 DOMAIN\user
            return argList[1] + "\" + argList[0];
        }
    }

    return "NO OWNER";
}

Méthode 2 : Par nom de processus

public string GetProcessOwner(string processName)
{
    string query = "Select * from Win32_Process Where Name = \"" + processName + "\"";
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
    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 DOMAIN\user
            string owner = argList[1] + "\" + argList[0];
            return owner;       
        }
    }

    return "NO OWNER";
}

En utilisant ces méthodes basées sur WMI, vous pouvez efficacement déterminer le propriétaire d'un processus en utilisant son ID ou son nom de processus. Ces informations peuvent être inestimables pour analyser les processus du système et adapter vos applications en conséquence.

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