Zugriff auf Process.MainModule.FileName ohne Win32-Ausnahme
Beim Abrufen des Pfads zu laufenden Prozessen mithilfe der Process.GetProcessById-Methode können Sie dies tun Es kommt zu einer Win32Exception, die Sie daran hindert, auf die Eigenschaft MainModule.FileName zuzugreifen. Diese Ausnahme tritt auf, wenn versucht wird, Modulinformationen aus bestimmten Prozessen abzurufen.
Lösung:
Um dieses Problem zu umgehen, können Sie eine von Jeff Mercado beschriebene Methode anwenden. Der folgende Code zeigt, wie man den vollständigen Dateipfad eines bestimmten Prozesses erhält:
string s = GetMainModuleFilepath(2011);
Hier ist die Implementierung der GetMainModuleFilepath-Methode:
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; }
Durch Nutzung der Windows Management Instrumentation (WMI) können Sie Prozessinformationen abfragen und den ausführbaren Pfad extrahieren, ohne die Win32Exception auszulösen.
Das obige ist der detaillierte Inhalt vonWie greife ich ohne Win32Exception auf Process.MainModule.FileName zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!