Maison >développement back-end >C++ >Comment éviter l'exception Win32 lors de l'obtention du chemin exécutable d'un processus ?

Comment éviter l'exception Win32 lors de l'obtention du chemin exécutable d'un processus ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-28 01:09:10915parcourir

How to Avoid Win32Exception When Getting a Process's Executable Path?

Contournement de l'exception Win32 lors de l'accès à Process.MainModule.FileName

Lors de la tentative de récupération du chemin du fichier pour l'exécution de processus via Process.MainModule.FileName , certains processus peuvent générer une Win32Exception en raison de l'incapacité de répertorier les modules de processus. Pour résoudre ce problème, Jeff Mercado a proposé une méthode alternative.

Le code C# adapté :

string s = GetMainModuleFilepath(2011);

Implémentation complète des fonctions :

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;
}

Cette approche utilise Windows Management Instrumentation (WMI) pour interroger le processus spécifique et récupérer son chemin exécutable sans tenter d'accéder à ses modules de processus. Cela évite l'erreur rencontrée lors de l'accès direct à la propriété Process.MainModule.FileName.

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