Heim >Backend-Entwicklung >C++ >Wie vermeide ich Win32Exception beim Abrufen des ausführbaren Pfads eines Prozesses?
Umgehen der Win32Exception beim Zugriff auf Process.MainModule.FileName
Beim Versuch, den Dateipfad zum Ausführen von Prozessen über Process.MainModule.FileName abzurufen , können einige Prozesse eine Win32Exception auslösen, da Prozessmodule nicht aufgelistet werden können. Um dieses Problem zu beheben, stellte Jeff Mercado eine alternative Methode bereit.
Der angepasste C#-Code:
string s = GetMainModuleFilepath(2011);
Vollständige Funktionsimplementierung:
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; }
Dieser Ansatz nutzt Windows Management Instrumentation (WMI), um den spezifischen Prozess abzufragen und seinen ausführbaren Pfad abzurufen, ohne zu versuchen, auf seine Prozessmodule zuzugreifen. Dadurch wird der Fehler vermieden, der auftritt, wenn direkt auf die Eigenschaft Process.MainModule.FileName zugegriffen wird.
Das obige ist der detaillierte Inhalt vonWie vermeide ich Win32Exception beim Abrufen des ausführbaren Pfads eines Prozesses?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!