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!