Alternative für QueryFullProcessImageName
-
Ich suche eine Funktion mit der ich den Pfad eines Prozesses anhand seines Handles oder Prozess ID bekomme.
Unter Umständen kann dieser Prozess die Windows Explorer.exe sein was anscheinend zu Problemen führt.
Ich habe zunächst mit "QueryFullProcessImageName" gearbeitet was auch wunderbar geklappt hat. Da das Programm aber auch unter Windows XP laufen muss kann ich die Funktion leider nicht mehr benutzen.
Die angebliche Alternative "GetModuleFileNameEx" funktioniert ansich ganz gut scheint aber mit der Explorer.exe nicht klar zu kommen und wirft dabei immer Fehler 299.
GetProcessImageFileName funktioniert zwar mit der Explorer.exe, ich habe aber bisher noch keinen Weg gefunden den "echten" Filepfad aus der "device form" zu bekommen.
Für einen Tipp wäre ich dankbar.
-
Zeig' mal womit Du
GetModuleFileNameEx( )
aufrufst ...
-
Über WMI:
"SELECT ExecutablePath FROM Win32_Process WHERE ProcessId = HierHinDieProcessID"
-
Ich würde auch zu WMI raten, das alle anderen Methoden nicht korrekt funktionieren; zumindest nicht mit x64 und x86...
-
Jochen Kalmbach schrieb:
Ich würde auch zu WMI raten, das alle anderen Methoden nicht korrekt funktionieren; zumindest nicht mit x64 und x86...
Quatsch, mit tlhelp32 Funktionen klappt es.
MODULEENTRY32 / CreateToolhelp32Snapshot / Module32First / Module32Next
-
Jochen Kalmbach schrieb:
Ich würde auch zu WMI raten, das alle anderen Methoden nicht korrekt funktionieren; zumindest nicht mit x64 und x86...
Cool.
Weißt Du zufällig von einer öffentlich zugänglichen Sammlung solcher Quirks?
-
Ethon schrieb:
Jochen Kalmbach schrieb:
Ich würde auch zu WMI raten, das alle anderen Methoden nicht korrekt funktionieren; zumindest nicht mit x64 und x86...
Quatsch, mit tlhelp32 Funktionen klappt es.
Dann versuch mal von einem x86 Prozess diese Infos aus einem x64 Prozess auszulesen...
-
Danke, mit WMI scheint es zu klappen.
-
Jochen Kalmbach schrieb:
Ich würde auch zu WMI raten, das alle anderen Methoden nicht korrekt funktionieren; zumindest nicht mit x64 und x86...
Also wenn ich Dich jetzt richtig verstanden habe... Dann hast Du keine Ahnung... tut mir leid.
Das über WMI aus einem C++ Code raus ist nach meiner Meinung unter aller Sau!
Tut mir leid.
-
wiebitte schrieb:
Das über WMI aus einem C++ Code raus ist nach meiner Meinung unter aller Sau!
Tut mir leid.Tja ist nicht schön, aber den user-comments in der msdn nach wohl die beste Lösung
-
WMI ist schon eklig, wa
-
wiebitte schrieb:
Jochen Kalmbach schrieb:
Ich würde auch zu WMI raten, das alle anderen Methoden nicht korrekt funktionieren; zumindest nicht mit x64 und x86...
Also wenn ich Dich jetzt richtig verstanden habe... Dann hast Du keine Ahnung... tut mir leid.
Dann poste hier bitte man eine Lösung für das von mir genannte Problem... (auslesen der Infos aus x86 Prozessen auf einem x64 System)
Auch gibt es z.B. keine andere Dokumentierte vorgehensweise um die Kommandozeile eines Prozesses auszulesen... welche auch wieder unter x86/x64 funktioniert...
Aber ich bin immer für neue funktionierende Lösungen offen!
-
Wenn dir der nicht Standard zu hoch ist dann führe doch einfach ein 64bit process mit. Oder bist Du zu faul? Und was spricht dagegen die filehandles zu verbiegen?Auch nichts oder! Aber hauptsache WMI ist mit dabei, was...