Seite 1 von 2
Exe die sich selbst löscht
Verfasst: 11.04.2012 01:41
von pyromane
Nabend,
ich bin in einem C Forum darauf gestoßen, das es soweit möglich sein soll, das sich eine Exe selbst löscht. Dies geschiet über Umwege...
Code: Alles auswählen
Procedure SelfErase()
Protected File.i, Temp.s, File_.s
Temp = GetEnvironmentVariable("TEMP")
File_ = Temp+"\delete_programm.bat"
File = CreateFile(#PB_Any, File_)
WriteStringN(File, ":Repeat")
WriteStringN(File, "del "+Chr(34)+ProgramFilename()+Chr(34))
WriteStringN(File, "If exist "+Chr(34)+ProgramFilename()+Chr(34)+" Goto Repeat")
WriteStringN(File, "del "+Chr(34)+File_+Chr(34))
CloseFile(File)
RunProgram(File_, "", "", #PB_Program_Hide)
End
EndProcedure
SelfErase()
Alleridngs geht noch ein schwarzes CMD Fenster auf, welches ich mir nicht erklären kann und die Datei wird nicht gelöscht... Rufe ich die Batch von Hand auf, löscht dieses die Exe + die Batch.
Habt ihr eine Idee wo der Fehler liegt?
Lg und Dank,
pyromane
Re: Exe die sich selbst löscht
Verfasst: 11.04.2012 08:50
von 7x7
Wofür braucht man denn eine Exe die sich selbst löscht?
Re: Exe die sich selbst löscht
Verfasst: 11.04.2012 09:37
von ts-soft
7x7 hat geschrieben:Wofür braucht man denn eine Exe die sich selbst löscht?
Wenn der Code dann auch noch den Source löschen würde, wäre es perfekt
Für einen Uninstaller z.B.
Ansonsten, funktionierende Beispiele findet man über die Boardsuche, evtl. auch mal im engl.
Forum gucken.
Re: Exe die sich selbst löscht
Verfasst: 11.04.2012 09:43
von c4s
ts-soft hat geschrieben:Wenn der Code dann auch noch den Source löschen würde, wäre es perfekt
...Gute Idee. Und am Besten PureBasic gleich mit deinstallieren.

Re: Exe die sich selbst löscht
Verfasst: 11.04.2012 10:16
von RSBasic
@pyromane
Es wurde bereits darüber diskutiert:
http://purebasic.fr/german/viewtopic.php?f=16&t=24253
c4s hat geschrieben:ts-soft hat geschrieben:Wenn der Code dann auch noch den Source löschen würde, wäre es perfekt
...Gute Idee. Und am Besten PureBasic gleich mit deinstallieren.

Windows dann auch. Und am besten den Computer gleich entsorgen.
Re: Exe die sich selbst löscht
Verfasst: 11.04.2012 12:47
von pyromane
Hallo
danke für eure Antworten. In einem anderen Thread habe ich einen ähnlichen Code gefunden und den etwas umgeschrieben. Ich bin nun bei folgendem Code:
Code: Alles auswählen
Procedure SelfErase()
RunProgram(GetEnvironmentVariable("comspec"), "/c del "+Chr(34)+ProgramFilename()+Chr(34), "", #PB_Program_Hide)
End
EndProcedure
Das funktioniert auch schin gut. Nun flackert ganz kurz die schwarze CMD Box auf. Das stört mich bei anderen Programmen immer enorm und ich möchte in meinem Programm nicht den selben Fehler machen
Wieso passiert das mit dem flackern?
Re: Exe die sich selbst löscht
Verfasst: 11.04.2012 14:36
von Nino
RSBasic hat geschrieben:c4s hat geschrieben:ts-soft hat geschrieben:Wenn der Code dann auch noch den Source löschen würde, wäre es perfekt
...Gute Idee. Und am Besten PureBasic gleich mit deinstallieren.

Windows dann auch. Und am besten den Computer gleich entsorgen.
Also bitte, nun ist aber gut.

Nicht, dass am Ende noch jemand ein Schwarzes Loch programmiert.
Code: Alles auswählen
MessageRequester("Letzte Frage", "Möchten Sie sich selbst und den Rest Ihres Sonnensystems auf Erbsengröße verkleinern?", #PB_MessageRequester_YesNo)
Re: Exe die sich selbst löscht
Verfasst: 11.04.2012 16:41
von WPö
Man sollte die bei jedem vernünftigen PC-System serienmäßig installierte Selbstzerstörung aktivieren.
Code: Alles auswählen
MessageRequester("Allerletzte Frage", "Nuke?", #PB_MessageRequester_YesNo)
Nein, man könnte einen Nebenläufer starten, der ganz einfach solange das Dateisystem fragt, bis die Programmdatei geschlossen wird und wieder Schreib-/Löschzugriff erlaubt ist. Dann kurzen Prozeß machen, worauf sich auch dieses Programm (das sich ja nur im RAM befindet) beendet.
Gruß - WPö
Re: Exe die sich selbst löscht
Verfasst: 11.04.2012 17:13
von ts-soft
Falls ein Nebenläufer ein Thread sein sollte, das geht nicht, da der Thread mit dem Process endet.
Es geht nur mit einem Script und Interpreter, wie es mit einer Batch der Fall ist, weil die cmd.exe
wollen wir ja nicht löschen.
Re: Exe die sich selbst löscht
Verfasst: 11.04.2012 18:21
von RSBasic
ts-soft hat geschrieben:Es geht nur mit einem Script und Interpreter,
Oder Windows auffordern, die gewünschte Datei später zu entfernen.