Win32-Ausnahme beim Zugriff auf Process.MainModule.FileName in C# vermeiden
In C# wird versucht, die FileName-Eigenschaft des MainModule eines Prozesses abzurufen kann gelegentlich eine Win32Exception auslösen, insbesondere bei der Arbeit mit 64-Bit-Plattformen. Um dieses Problem anzugehen, bietet die Lösung von Jeff Mercado einen zuverlässigen Ansatz.
Angepasster Code:
Um den Prozess zu vereinfachen, finden Sie hier eine Anpassung des Mercado-Codes, um den Dateipfad zu erhalten eines bestimmten Prozess:
string s = GetMainModuleFilepath(2011);
Implementierung:
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; }
Diese Methode fragt die Windows Management Instrumentation (WMI) nach der ExecutablePath-Eigenschaft des Prozesses mit der angegebenen Prozess-ID ab . Wenn ein passender Prozess gefunden wird, wird dessen Dateipfad zurückgegeben. Andernfalls wird null zurückgegeben.
Das obige ist der detaillierte Inhalt vonWie erhalte ich zuverlässig den Dateipfad eines Prozesses in C# und vermeide Win32Exceptions?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!