Exe die sich selbst löscht

Für allgemeine Fragen zur Programmierung mit PureBasic.
pyromane
Beiträge: 276
Registriert: 09.09.2010 14:10

Exe die sich selbst löscht

Beitrag 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
PureBasic 5.21 LTS auf Windows 7 x64 (Intel i5 2500K, 8GB Ram, Nvidia GTX 780)
Benutzeravatar
7x7
Beiträge: 591
Registriert: 14.08.2007 15:41
Computerausstattung: ganz toll
Wohnort: Lelbach

Re: Exe die sich selbst löscht

Beitrag von 7x7 »

Wofür braucht man denn eine Exe die sich selbst löscht?
- alles was ich hier im Forum sage/schreibe ist lediglich meine Meinung und keine Tatsachenbehauptung
- unkommentierter Quellcode = unqualifizierter Müll
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Exe die sich selbst löscht

Beitrag 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 :mrgreen:

Für einen Uninstaller z.B. :wink:

Ansonsten, funktionierende Beispiele findet man über die Boardsuche, evtl. auch mal im engl.
Forum gucken.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Exe die sich selbst löscht

Beitrag von c4s »

ts-soft hat geschrieben:Wenn der Code dann auch noch den Source löschen würde, wäre es perfekt :mrgreen:
...Gute Idee. Und am Besten PureBasic gleich mit deinstallieren. <)
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Exe die sich selbst löscht

Beitrag 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 :mrgreen:
...Gute Idee. Und am Besten PureBasic gleich mit deinstallieren. <)
Windows dann auch. Und am besten den Computer gleich entsorgen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
pyromane
Beiträge: 276
Registriert: 09.09.2010 14:10

Re: Exe die sich selbst löscht

Beitrag 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 :D

Wieso passiert das mit dem flackern?
PureBasic 5.21 LTS auf Windows 7 x64 (Intel i5 2500K, 8GB Ram, Nvidia GTX 780)
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Exe die sich selbst löscht

Beitrag 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 :mrgreen:
...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. :D
Nicht, dass am Ende noch jemand ein Schwarzes Loch programmiert. :lol:

Code: Alles auswählen

MessageRequester("Letzte Frage", "Möchten Sie sich selbst und den Rest Ihres Sonnensystems auf Erbsengröße verkleinern?", #PB_MessageRequester_YesNo)
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: Exe die sich selbst löscht

Beitrag 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)
:mrgreen:

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ö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Exe die sich selbst löscht

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Exe die sich selbst löscht

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten