Entwickler-Ecke
Windows API - Laufende EXE löschen
LonghornUser - Fr 06.08.04 18:05
Titel: Laufende EXE löschen
Hallo.
Ich habe bereits im forum gesucht, aber leider nix gefunden.
Wie macht man das möglichst ohne externe datei ?
hofe auf schnelle antworten.
ciao
mstuebner - Fr 06.08.04 18:15
Titel: Re: Laufende EXE löschen
| LonghornUser hat folgendes geschrieben: |
Hallo.
Ich habe bereits im forum gesucht, aber leider nix gefunden.
Wie macht man das möglichst ohne externe datei ?
hofe auf schnelle antworten. |
Hoffnung mit zwei F ist aber mehr wert. Wenn es ohne externe Datei gehen soll, dann musst Du auf einen Registry-Eintrag zurückgreifen (wenngleich ich mich momentan nicht an den genauen Eintrag erinnere). Es gibt dort Einträge z.B. um Dateien beim nächsten Neustart auszutauschen/kopieren/löschen.
raziel - Fr 06.08.04 18:17
Hm, ich würde sagen -> Alle laufenden Instanzen der Exe beenden und dann löschen. Da findest bestimmt auch was im Forum zu:
PROZESS BEENDEN
raziel
mstuebner - Fr 06.08.04 18:19
| raziel hat folgendes geschrieben: |
Hm, ich würde sagen -> Alle laufenden Instanzen der Exe beenden und dann löschen. Da findest bestimmt auch was im Forum zu: PROZESS BEENDEN |
Wie soll ein Programm sich selbst beenden und ANSCHLIESSEND sich selbst löschen? Nur mal als Frage?
raziel - Fr 06.08.04 18:30
Die Frage war lediglich, wie man eine laufende Exe löscht. Davon, dass die laufende Exe sich selbst löschen soll, war nicht explizit die Rede.
raziel
LonghornUser - Fr 06.08.04 18:32
@ mstuebner: Das stimmt.
Vielleicht sollte iches doch mit ner externen andwendung machen, d.h. mit ner .BAT-Datei. können die sich nicht selbst löschen ? Wenn ja, was muss da genau reingeschrieben werden ? Bin nicht so fit in BAT-Programmierung :(
mstuebner - Fr 06.08.04 18:32
| raziel hat folgendes geschrieben: |
| Die Frage war lediglich, wie man eine laufende Exe löscht. Davon, dass die laufende Exe sich selbst löschen soll, war nicht explizit die Rede. |
Ich erlaube mir aus dem originalen Posting zu zitieren...
| Zitat: |
| Wie macht man das möglichst ohne externe datei? |
mstuebner - Fr 06.08.04 18:35
| LonghornUser hat folgendes geschrieben: |
@ mstuebner: Das stimmt.
Vielleicht sollte iches doch mit ner externen andwendung machen, d.h. mit ner .BAT-Datei. können die sich nicht selbst löschen ? Wenn ja, was muss da genau reingeschrieben werden ? Bin nicht so fit in BAT-Programmierung :( |
Die BAT (oder CMD) Zeiten sind auch bei mir eine ganze Weile vorbei, jedoch bin ich der Meinung, dass sich BATCHdateien sehr wohl selbst löschen können, da sie ja nicht ausgeführt sondern in den Interpreter geladen werden.
raziel - Fr 06.08.04 18:41
| mstuebner hat folgendes geschrieben: |
Ich erlaube mir aus dem originalen Posting zu zitieren...
| Zitat: | | Wie macht man das möglichst ohne externe datei? |
|
Was nicht zwangsläufig bedeutet, dass seine ausführende Exe sich selbst löschen soll.
Das mit den .BAT Dateien ginge im Zusammenhang mit einem Autostart-Eintrag in "HKEY_CU\Software\Microsoft\Windows\CurrentVersion\RunOnce" (iirc) und folgender .BAT Datei:
deleteit.bat
1: 2:
| del diezulöschende.exe del deleteit.bat |
Ganz so sauber is das zwar nicht und es gibt auch ne Fehlermeldung (deleteit.bat kann nicht gefunden werden), aber es funktioniert...
raziel
LonghornUser - Fr 06.08.04 18:59
Ja, dass sich eine laufende Datei (EXE) selbst löscht :)
@raziel: Warum muss das in den Autostart ? Kann man nicht in die BAT-Datei einen befehl â la wait(5); (wobei 5 die zeit in milisekunden ist) ? Also so, dass die EXE die BAT aufruft und sich anschließend selbst beendet. Nachdem der Timer der BAT abgelaufen ist, löscht die datei die EXE sowie die BAT ? Geht das so ?
raziel - Fr 06.08.04 19:26
| LonghornUser hat folgendes geschrieben: |
| @raziel: Warum muss das in den Autostart ? Kann man nicht in die BAT-Datei einen befehl â la wait(5); (wobei 5 die zeit in milisekunden ist) ? Also so, dass die EXE die BAT aufruft und sich anschließend selbst beendet. Nachdem der Timer der BAT abgelaufen ist, löscht die datei die EXE sowie die BAT ? Geht das so ? |
Nein, das läuft so: Deine Exe macht das, was sie soll. Dann erstellt sie diese Bat Datei (mit den exakten Pfaden) und trägt eben diese Bat Datei in den RunOnce Schlüssel in die Registry ein. Dann wird beim nächsten Booten diese Bat Datei gestartet, ein kleines Dos-Fenster blitzt auf und verschwindet wieder und dann wird der Eintrag (afaik) von Windows gelöscht. Das dürfte auch unter allen Windows-Versionen funktionieren, Probleme könnts geben, wenn der User nicht das Recht hat, die Exe zu löschen... Aber das dürfts eh, bei jeder Lösung unter NT/XP geben...
raziel
LonghornUser - Fr 06.08.04 21:10
hallo nochmals,
ich habe das jetzt so gemacht, dass ich unter runonce die bat datei reingeschrieben habe. die bat datei sieht so aus:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| :Label1 del "C:\Programme\progg\Uninstall.exe" if Exist "C:\Programme\progg\Uninstall.exe" goto Label1 del "C:\Programme\progg\images\*.*" rmdir "C:\Programme\progg\images" rmdir "C:\Programme\proff\" del C:\RemoveEHK.bat |
doch leider fragt er jetzt immer, ob C:\Programme\progg\images\*.* gelöscht werden soll. und zwar mit J/N abfrage sodass der user erst j drücken muss :( Kann ich das autom. bestätigen lassen ?
mstuebner - Fr 06.08.04 22:16
| LonghornUser hat folgendes geschrieben: |
| doch leider fragt er jetzt immer, ob C:\Programme\progg\images\*.* gelöscht werden soll. und zwar mit J/N abfrage sodass der user erst j drücken muss :( Kann ich das autom. bestätigen lassen ? |
Wäre es sehr innovativ auf der Shell mal
del /? einzugeben?
raziel - Sa 07.08.04 09:41
Um gleich der nächsten Frage ("Warum wird ds Verzeichnis C:\Programme\Progg nicht gelöscht??") vorzubeugen:
Änder in Zeile 6 die beiden "ff" doch einfach in "gg" ;-)
raziel
LonghornUser - Sa 07.08.04 12:28
jaaaaa :lol: das ff war ein schreibfehler. SORRY Aber ich habs jetzt hinbekommen. Geht alles super, bis auf das man neustarten muss, aber das geht ja nicht anders, wenn man will, dass es unter allen windows geht (98/ME/NT/2K/XP). Naja. Danke aber an alle.
Anonymous - Sa 07.08.04 12:39
Wenn ich mich nicht irre kannst du auch einfach die BAT-Datei unsichtbar per ShellExecute starten und direkt danach das Programm beenden.
LonghornUser - Sa 07.08.04 12:49
ja, das ginge, aber dann würde die bat ja bevor die anwendung beendet ist versuchen, sie zu löschen, was ja nicht geht. es sei denn die BAT kann meine anwendung selber beenden (killtask oder so) geht sowas ?
Delete - Sa 07.08.04 15:36
Dann bau in die Batch-Datei eine Schleife ein, die so lange versucht die Exe zu löschen, bis es geht. WEie das geht solltest du hie rim Forum finden.
Popov - Sa 07.08.04 16:49
Hej Leute, ist einer von euch Spezis auf die Idee gekommen in der FAQ hachzugucken? Da liegt schon seit Jahren ein Beitrag mit einem Beispiel wie man das eigene Programm mit Hilfe eine BAT Datei löschen:
http://www.delphi-forum.de/viewtopic.php?p=65807#65807
scrooge - Sa 07.08.04 22:09
Schau mal unter unter diesem LInk (da steht, wie sich eine Exe selbst aus dem eigenen Prog ohne Bat ohder zur Hilfenahme einer zweiten Instanz der Exe löschen kann). Hba noch nicht asuprobiert und den letzten Teil spez. für windowsXOP ist mir nicht so recht klar. Probiers mal:
http://www.catch22.org.uk/tuts/selfdel.asp
LonghornUser - Sa 07.08.04 23:21
OK: ich habe es jetzt mit der lösung aus den FAQs gemacht :D Alles funzt nun. Danke !!!
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!