Dateipfad eines 64-bit Prozesses per 32-bit Anwendung abfragen
Hallo,
ich arbeite mit VS2010 Express an einem Programm und hab mal wieder eine Frage...
...und zwar will ich den Dateipfad (der, den man auch im Taskmanager sieht) für alle laufenden Prozesse abfragen. Das Problem:
Es handelt sich hierbei um eine 32-bit Anwendung auf einem 64-bit Windows 7 OS. Nun kommt folgender Fehler, wenn ich den Dateipfad eines 64-bit Prozesses ermitteln will:
Den Pfad versuche ich über Process.MainModule.FileName abzufragen.
Kann man das irgendwie umgehen? z.B. per api?
Mfg,
Mathe172
ich arbeite mit VS2010 Express an einem Programm und hab mal wieder eine Frage...
...und zwar will ich den Dateipfad (der, den man auch im Taskmanager sieht) für alle laufenden Prozesse abfragen. Das Problem:
Es handelt sich hierbei um eine 32-bit Anwendung auf einem 64-bit Windows 7 OS. Nun kommt folgender Fehler, wenn ich den Dateipfad eines 64-bit Prozesses ermitteln will:
Eine Ausnahme (erste Chance) des Typs "System.ComponentModel.Win32Exception" ist in System.dll aufgetreten.
Ein 32-Bit-Prozess kann nicht auf Module eines 64-Bit-Prozesses zugreifen.
Den Pfad versuche ich über Process.MainModule.FileName abzufragen.
Kann man das irgendwie umgehen? z.B. per api?
Mfg,
Mathe172
Please also mark the comments that contributed to the solution of the article
Content-ID: 167006
Url: https://administrator.de/contentid/167006
Printed on: November 9, 2024 at 06:11 o'clock
4 Comments
Latest comment
Hallo Mathe,
schau mal hier nach. Das ist zwar Delphi-Code, aber evtl. kannst Du Dir dort trotzdem was rausziehen.
Gruß
Friemler
schau mal hier nach. Das ist zwar Delphi-Code, aber evtl. kannst Du Dir dort trotzdem was rausziehen.
Gruß
Friemler
Hallo Mathe,
ich habe weder Visual Studio (sondern Delphi) noch ein 64Bit-System (sondern Windows 7 Ultimate 32Bit). Aber wenn ich mit VBS folgende Abfrage mache, erhalte ich einen Wert für
Das sollte eigentlich das selbe machen, wie Dein Code. Teste das doch mal bei Dir.
Was Deine zweite Frage betrifft, keine Ahnung , Google fragen.
Gruß
Friemler
ich habe weder Visual Studio (sondern Delphi) noch ein 64Bit-System (sondern Windows 7 Ultimate 32Bit). Aber wenn ich mit VBS folgende Abfrage mache, erhalte ich einen Wert für
ExecutablePath
beim Explorer, bei vielen anderen Prozessen jedoch nicht.strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\CIMV2")
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='explorer.exe'")
For Each objProcess in colProcesses
WScript.Echo "Name : " & objProcess.Name
WScript.Echo "ExecutablePath: " & objProcess.ExecutablePath
WScript.Echo "CommandLine : " & objProcess.CommandLine
WScript.Echo
Next
Das sollte eigentlich das selbe machen, wie Dein Code. Teste das doch mal bei Dir.
Was Deine zweite Frage betrifft, keine Ahnung , Google fragen.
Gruß
Friemler