Maison >développement back-end >C++ >Comment accéder à Process.MainModule.FileName sans exception Win32 ?

Comment accéder à Process.MainModule.FileName sans exception Win32 ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-31 21:14:15598parcourir

How to Access Process.MainModule.FileName Without a Win32Exception?

Accès à Process.MainModule.FileName sans exception Win32

Lors de la récupération du chemin d'accès aux processus en cours d'exécution à l'aide de la méthode Process.GetProcessById, vous pouvez rencontrez une Win32Exception qui vous empêche d’accéder à la propriété MainModule.FileName. Cette exception se produit lorsque vous tentez de récupérer des informations de module à partir de certains processus.

Solution :

Pour contourner ce problème, vous pouvez utiliser une méthode décrite par Jeff Mercado. Le code suivant montre comment obtenir le chemin de fichier complet d'un processus spécifique :

string s = GetMainModuleFilepath(2011);

Voici l'implémentation de la méthode GetMainModuleFilepath :

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

En tirant parti de Windows Management Instrumentation (WMI) , vous pouvez interroger les informations sur le processus et extraire le chemin de l'exécutable sans déclencher l'exception Win32.

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