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

Comment puis-je obtenir le propriétaire d'un processus en C# à l'aide de WMI ?

DDD
DDDoriginal
2025-01-17 11:36:09862parcourir

How Can I Get the Owner of a Process in C# Using WMI?

Obtenir le propriétaire du processus en C#

Un contrôle précis et une gestion de la sécurité nécessitent un accès aux informations sur le propriétaire du processus. Cet article décrit une méthode pour obtenir le propriétaire d’un processus à l’aide de Windows Management Instrumentation (WMI).

Tout d'abord, vous devez citer System.Management.dll. Cela vous permettra d'utiliser le framework WMI.

Obtenir le propriétaire par ID de processus

L'extrait de code suivant obtient le propriétaire d'un processus en fonction de son ID de processus :

<code class="language-csharp">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)
        {
            // 返回 DOMAIN\user 格式
            return argList[1] + "\" + argList[0];
        }
    }

    return "NO OWNER";
}</code>

Obtenir le propriétaire par nom de processus

Pour obtenir le propriétaire par nom de processus, vous pouvez utiliser l'extrait de code suivant :

<code class="language-csharp">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)
        {
            // 返回 DOMAIN\user 格式
            string owner = argList[1] + "\" + argList[0];
            return owner;
        }
    }

    return "NO OWNER";
}</code>

En utilisant WMI, vous pouvez déterminer efficacement le propriétaire d'un processus, gagnant ainsi en flexibilité et en sécurité dans la gestion des ressources système.

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