Maison > développement back-end > C++ > Comment éviter les exceptions Win32 lors de l'accès à Process.MainModule.FileName en C# ?

Comment éviter les exceptions Win32 lors de l'accès à Process.MainModule.FileName en C# ?

Susan Sarandon
Libérer: 2024-12-26 00:51:10
original
857 Les gens l'ont consulté

How to Avoid Win32Exceptions When Accessing Process.MainModule.FileName in C#?

Accès à Process.MainModule.FileName en C# : éviter les exceptions Win32

Lors de la tentative d'accès à la propriété Process.MainModule.FileName en C#, les développeurs peuvent rencontrer une Win32Exception. Cette exception est généralement rencontrée lors de l'énumération des modules de processus sur une plate-forme 64 bits, malgré la recompilation de l'application pour des environnements 32 bits (x86) ou AnyCPU.

Le code en question prend souvent la forme suivante :

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

Pour résoudre ce problème, les développeurs peuvent exploiter le code fourni par Jeff Mercado, comme suggéré dans la réponse de référence. Ce code a été légèrement adapté pour récupérer le chemin de fichier d'un processus spécifique :

string s = GetMainModuleFilepath(2011);
Copier après la connexion

La méthode GetMainModuleFilepath utilise Windows Management Instrumentation (WMI) pour interroger la classe Win32_Process pour la propriété ExecutablePath :

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

En utilisant cette approche, les développeurs peuvent contourner l'exception Win32 et récupérer avec succès le MainModule.FileName pour le spécifié. processus.

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