Maison > développement back-end > C++ > Pourquoi l'accès à Process.MainModule.FileName génère-t-il des exceptions Win32 et comment WMI peut-il fournir une solution ?

Pourquoi l'accès à Process.MainModule.FileName génère-t-il des exceptions Win32 et comment WMI peut-il fournir une solution ?

Linda Hamilton
Libérer: 2024-12-30 17:21:14
original
166 Les gens l'ont consulté

Why Does Accessing Process.MainModule.FileName Throw Win32Exceptions, and How Can WMI Provide a Solution?

Résolution des exceptions Win32 lors de l'accès à Process.MainModule.FileName en C

Dans les projets C# impliquant l'énumération des processus en cours d'exécution, accès à la propriété FileName de Process.MainModule pour certains les processus peuvent déclencher des erreurs Win32Exception avec le message « Une erreur s'est produite lors de la liste des modules de processus ». Ce problème persiste quelle que soit la cible de compilation (x86, AnyCPU).

Problème d'origine

Process p = Process.GetProcessById(2011);
string s = proc_by_id.MainModule.FileName;
Copier après la connexion

Solution

Comme suggéré par Jeff Mercado, tirer parti de Windows Management Instrumentation ( WMI) peut contourner cette erreur. Plus précisément, la propriété ExecutablePath de la classe Win32_Process peut être utilisée pour récupérer le chemin du fichier du module principal.

Implémentation

string s = GetMainModuleFilepath(2011);
Copier après la connexion
private string GetMainModuleFilepath(int processId)
{
    string wmiQueryString = "SELECT ProcessId, ExecutablePath FROM Win32_Process WHERE ProcessId = " + processId;
    using (var searcher = new ManagementObjectSearcher(wmiQueryString))
    {
        using (var results = searcher.Get())
        {
            ManagementObject mo = results.Cast<ManagementObject>().FirstOrDefault();
            if (mo != null)
            {
                return (string)mo["ExecutablePath"];
            }
        }
    }
    return null;
}
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal