Entwickler-Ecke
Windows API - ReadProcessMemory + Vista + STRG-ALT-ENTF = Problem
KarYn-To - So 26.08.07 17:34
Titel: ReadProcessMemory + Vista + STRG-ALT-ENTF = Problem
Hallo Leute,
ich hab ein riesiges Problem. Ich hab ein Programm geschrieben, dass den Speicher eines anderen Programms ausliest. Sobald STRG+ALT+ENTF gedrückt wird, kann mein Programm nicht mehr im Speicher zugreifen und gibt mit GetLastError = ERROR_ACCESS_DENIED aus. Ergo, ich kann in diesem Bildschirm (Computer sperren... etc... Task-Manager starten) nicht mehr auf den Speicher des Prozesses zugreifen.
Jetzt ist mein Problem ich checke durch ReadProcessMemory, ob der Prozess noch aktiv ist. Und wenn ERROR_ACCESS_DENIED drei mal hintereinander beim Zugriff auf den Speicher auftritt, dann werden die Prozesse aus der Überwachungsliste gelöscht.
Gibt es einen anderen Weg, wie man überprüfen kann, ob ein Prozess noch nicht beendet ist ?
Gibt es eine Möglichkeit trotz STRG-ALT-ENTF auf den Prozess über ReadProcessMemory zuzugreifen ?
Wieso kann man eigentlich nicht mehr darauf zugreifen ?
^^ ein paar kleine Fragen, mFG Angelo
P.S. das Programm was überwacht wird ist ein Konsolenprogramm.
KarYn-To - So 26.08.07 19:46
Danke für die schnelle Hilfe Jungs, alleine hätte ich es nie geschafft.
Also zunächst mal hab ich ein falsches Vorgehen gehabt, weil ich mit ReadProcessMemory geprüft habe, ob ich noch auf den Prozess zugreifen kann. Das war definitiv falsch, okay, das ganze hab ich natürlich geändert. Nach bisschen stöbern in dem Windows SDK sah ich die Funktion GetExitCodeProcess und hab das ganze damit umgeschrieben. Jetzt überprüfe ich, ob ich auf den Prozess zugreifen kann mit ReadProcessMemory und wenn nicht sicherheitshalber nochmal, ob dieser geschlossen wurde. Also falls GetExitCodeProcess mit STILL_ACTIVE ausspuckt, überprüft er den Prozess weiter.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function IsProcActive(hProc: Cardinal): Boolean; var exCode: Integer; begin Result := False; GetExitCodeProcess(hProc, exCode); if exCode <> 259 then Result := True; end; |
Das wäre die Funktion und ich hoffe auf gute Zusammenarbeit und zukünftige Hilfe.
MfG Angelo
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!