Heim > Backend-Entwicklung > C++ > Wie vermeide ich Win32Exceptions beim Zugriff auf Process.MainModule.FileName in C#?

Wie vermeide ich Win32Exceptions beim Zugriff auf Process.MainModule.FileName in C#?

Susan Sarandon
Freigeben: 2024-12-26 00:51:10
Original
845 Leute haben es durchsucht

How to Avoid Win32Exceptions When Accessing Process.MainModule.FileName in C#?

Zugriff auf Process.MainModule.FileName in C#: Win32-Ausnahmen vermeiden

Beim Versuch, auf die Process.MainModule.FileName-Eigenschaft in C# zuzugreifen, Entwickler können auf eine Win32Exception stoßen. Diese Ausnahme tritt typischerweise beim Aufzählen von Prozessmodulen auf einer 64-Bit-Plattform auf, obwohl die Anwendung für 32-Bit- (x86) oder AnyCPU-Umgebungen neu kompiliert wurde.

Der betreffende Code hat häufig die folgende Form:

Process p = Process.GetProcessById(2011);
string s = proc_by_id.MainModule.FileName;
Nach dem Login kopieren

Um dieses Problem zu beheben, können Entwickler den von Jeff Mercado bereitgestellten Code nutzen, wie in der Referenzantwort vorgeschlagen. Dieser Code wurde leicht angepasst, um den Dateipfad eines bestimmten Prozesses abzurufen:

string s = GetMainModuleFilepath(2011);
Nach dem Login kopieren

Die GetMainModuleFilepath-Methode nutzt Windows Management Instrumentation (WMI), um die Win32_Process-Klasse nach der ExecutablePath-Eigenschaft abzufragen:

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;
}
Nach dem Login kopieren

Durch die Verwendung dieses Ansatzes können Entwickler die Win32Exception umgehen und den MainModule.FileName für die angegebene Datei erfolgreich abrufen Prozess.

Das obige ist der detaillierte Inhalt vonWie vermeide ich Win32Exceptions beim Zugriff auf Process.MainModule.FileName in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage