Heim >Backend-Entwicklung >C++ >Wie vermeide ich Win32Exception beim Abrufen des ausführbaren Pfads eines Prozesses?

Wie vermeide ich Win32Exception beim Abrufen des ausführbaren Pfads eines Prozesses?

Barbara Streisand
Barbara StreisandOriginal
2024-12-28 01:09:10920Durchsuche

How to Avoid Win32Exception When Getting a Process's Executable Path?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn