Maison > développement back-end > C++ > Comment obtenir de manière fiable le chemin de fichier d'un processus en C# et éviter les exceptions Win32 ?

Comment obtenir de manière fiable le chemin de fichier d'un processus en C# et éviter les exceptions Win32 ?

Susan Sarandon
Libérer: 2025-01-03 12:31:40
original
684 Les gens l'ont consulté

How to Reliably Get a Process's File Path in C# and Avoid Win32Exceptions?

Éviter l'exception Win32 lors de l'accès à Process.MainModule.FileName en C#

En C#, tenter de récupérer la propriété FileName du MainModule d'un processus peut occasionnellement déclencher une Win32Exception, en particulier lorsque vous travaillez avec des plates-formes 64 bits. Pour résoudre ce problème, la solution de Jeff Mercado propose une approche fiable.

Code adapté :

Pour simplifier le processus, voici une adaptation du code de Mercado pour obtenir le chemin du fichier d'un spécifique process :

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

Implémentation :

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

Cette méthode interroge Windows Management Instrumentation (WMI) pour la propriété ExecutablePath du processus avec l'ID de processus spécifié . Si un processus correspondant est trouvé, son chemin de fichier est renvoyé. Sinon, null est renvoyé.

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