Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#1

Anwendung 100%ig garantiert beenden (lassen)?

  Alt 11. Apr 2012, 06:34
Hallo Leute,

Ich habe hier eine Anwendung, die beim Beenden manchmal im Speicher hängen bleibt. Das liegt an einer DLL, die offenbar schlampig programmiert ist.

Manchmal bleibt also die Anwendung im Speicher kleben. Da sie als "Singleton-EXE" umgesetzt ist, d.h. nur einmal gestartet werden kann, blockiert diese Leiche alle Versuche, die Anwendung neu zu starten (logisch, sie ist ja noch 'da').

Ich habe also diverse Dinge probiert, u.a. schickt die Anwendung einer anderen EXE (=der Wächter) eine Message, die daraufhin mit Killprocess versucht, das Teil zu entfernen. Klappt nicht immer.

Das blöde Ding will manchmal auch über den Taskmanager nicht weichen. Da hilft dann nur "abmelden", wobei Windows es irgendwie hinbekommt, das Teil entgültig zu vernichten.

Meine Fragen:
1. Gibt es eine 'best practice', um mit DLLs umzugehen? z.b. nicht statisch (eh blöd), kontrollierter Shutdown (d.h. die DLL entladen) usw.
2. Gibt es eine 100% sichere Möglichkeit eine EXE aus dem Speicher zu entfernen?
3. Wie schafft Windows es beim Abmelden / Runterfahren, jede EXE aus dem Speicher zu kicken. Welche API-Funktion ist das (außer "Shutdown" )
4. Wenn ich die Anwendung in der Delphi-IDE ausführe und sie mal wieder bockig ist, schafft Delphi das mit Strg-F2. Was steckt dahinter?
  Mit Zitat antworten Zitat