[C++]Selbstzerstörung

J!0X

Ensign
Registriert
Juni 2005
Beiträge
147
Ich möchte mit einem Batchbefehl die eigene Datei löschen. Ich weiß zwar, wie man Dateien löschen kann, aber während der Laufzeit kann man ja schlecht die eigene .exe löschen ^^.
:evillol:
naja pls help me ma
mfg jiox
 
Du lässt von deinem Programm eine Bat-Datei schreiben, die solange versucht deine exe zu löschen, bis es geht - und sich anschließend selber löscht (bei BATs gehts ja)

hier der Inhalt der Bat, die dein Programm schreiben muss:

Code:
@echo off
:Marke
Del "c:\SelfDestruct.exe"
If Exist "c:\SelfDestruct.exe" Goto Marke
Del "c:\Kill.bat"

Sobald sich deine Exe zerstören will:
1) Bat schreiben (natürlich mit angepassten pfaden)
2) Bat ausführen (>Bat versucht zu löschen, geht aber nicht - aber läuft weiter)
3) Programm beenden
4) Bat kann löschen, löscht exe und dannach sich selbst

Fertig
 
Mit welchem Parameter kann ich denn das Batch Programm verstecken?
 
Ich hab keine Ahnung, wie das in C++ geht - ich kann sowas nur in VB.
Aber wozu willst du die verstecken - das geschieht alle schneller als eine sekunde - so schnell ist der explorer garnicht aktualisiert, dass die bat datei überhaupt angezeigt wird.
 
Hallo,

ich glaube eher nicht das man eine Batch Datei verstecken kann. In C++ und sicher auch VB kann man die Taskbar anweisen keinen Eintrag anzuzeigen. Analog zum Taskmanager, siehe Menüpunkt "ausblenden wenn minimiert", sowie das eigene Fenster unsichtbar machen.

MfG

Arnd
 
Zuletzt bearbeitet:
in VB lässt sich das Batch-Programm komplett versteckt (d.h. das einzige was von dem Batch zu sehen ist, ist ein ganz kurzer Eintrag unter Taskmanager-Prozesse) folgendermaßen starten:

Shell("Batchdatei.bat", vbHidden)

...wie es in C++ geht, weiß ich net - aber geht bestimmt mit nem API aufruf, etc.
 
Das geht in C++ auch mit ShellExecute. Da gibt es den Parameter SW_HIDE bei nShowCmd.
Muss aber eben selber programmiert werden.

Dann würde ich aber keine Batchdatei mehr nehmen sondern selber was programmieren.

Wenn Dein Programm gelöscht werden soll, wird zuerst mit ShellExecute ein zweites Programm gestartet das unsichtbar ist.
Danach beendet sich das zu löschende Programm.
Dann kann das soeben gestartete Programm das jetzt nicht mehr laufende Programm problemlos löschen.

MfG

Arnd
 
Zuletzt bearbeitet:
Aber deine 2te Exe bleibt auf dem System zurück - Denn die kann sich wiederum nicht selber löschen.
Eine Bat-Datei kann das jedoch ;)
 
Die Frage ist halt warum er das ganze überhaupt machen will und ob es um ein komplettes Aufräumen geht.
Eine Deinstallation macht man eigentlich über die Systemsteuerung.
Oder soll das ein Kopierschutz werden?
Die Bat Datei hat sicher den Vorteil das man sie einfach zur Laufzeit erzeugen kann.
Aber man sieht es eben auch, das da was gemacht wird.
Aber man kann ja beide Ansätze mischen.
Die Bat Datei wird einfach mit Shellexecute und Parameter SW_HIDE gestartet.
Dann geht beides.

MfG

Arnd
 
Danke! Das hat mir geholfen!
Ich wollte das Programm eigentlich nur zur Übung machen(Ich habe vor 1 Woche mit C++ angefangen). Aber ich denke, dass ich noch viel zu lernen habe ^^.
MfG
J!0X
 
Zurück
Oben