Zum Inhalt springen

Self-destruction?


Spooky23

Empfohlene Beiträge

unter linux ist das kein Problem, vorausgesetzt, der Prozess hat die Rechte, die Datei zu löschen. Normalerweise haben normale User aber unter Linux nicht das Recht, Dateien zu löschen, die ihnen nicht gehören.

Außerdem ist zu beachten, dass die Datei erst dann endgültig gelöscht wird, wenn kein Prozess sie mehr geöffnet hält. Greift ein Prozess darauf zu und ein anderer löscht sie, wird nur der Verzeichniseintrag entfernt, die Datei selbst bleibt aber bestehen. der Plattenplatz ist erst überschreibbar (und damit freigegeben), wenn alle Prozesse die Datei geschlossen haben.

Unter Windows wird das 'selbst löschen' besonders gerne bei Installationsroutinen verwendet, was aber nie sonderlich gut klappt. Meistens wird ein kleiner 'Spawn' aufgerufen und dann das Hauptprogramm beendet. Der 'Spawn' löscht dann alle übrigen Dateien. Als nebenwirkung bleibt selbiges kleine Programm gerne mal übrig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von FunkyBeat

unter linux ist das kein Problem[...]

Außerdem ist zu beachten, dass die Datei erst dann endgültig gelöscht wird, wenn kein Prozess sie mehr geöffnet hält. Greift ein Prozess darauf zu und ein anderer löscht sie, wird nur der Verzeichniseintrag entfernt, die Datei selbst bleibt aber bestehen. der Plattenplatz ist erst überschreibbar (und damit freigegeben), wenn alle Prozesse die Datei geschlossen haben.

Das funktioniert auch mit einer Exe, die sich selber löschen will? Kenne etwas ähnliches für Daten Datein auf dem AmigaOS, also ein Bild z.B. anzeigen und während es angezeigt wird kann man es löschen, das bild bleibt aber angezeigt und man kann es z.B. woanders speichern oder schliessen und es ist weg. Ich dacht immer, das liegt daran, das eine Kopie im speicher angelegt wird (was bei einer Exe nicht der Fall wäre).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na klar kann sich ne .exe selber löschen, des funktioniert nur nicht ganz so einfach...

du musst das mit C++ oder ner anderen Programmiersprache lösen...

Ich erzähl mal wie's funzt, ich erzähl etz aus der Sicht der .exe ;)

Kopier dich selber ins Temp-Verzeichnis,

starte den Clone von dir, mit dem Flag:

FILE_FLAG_DELETE_ON_CLOSE

übergeb beim öffnen des (Clone-)Prozesses, die nummer des Original-Prozesses

und den vollständigen Pfad der Original-Datei...

und beende dich...

soderle, nun started unser Clone, unser Programm(was das gleiche ist wie der clone)

muss beim starten Parameter übernehmen,

warte bis die orignial-exe fertich ist und nun lösche die Original-exe und beende dich,

da der clone mit dem Flag

FILE_FLAG_DELETE_ON_CLOSE geöffnet wurde...

löscht er sich selber beim beenden...

sersen

JO

Ps. Sorry, war in eile ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...