Expi Geschrieben 21. März 2005 Teilen Geschrieben 21. März 2005 Hy Leute, eine Frage. Gibts ne Möglicgkeit damit sich ein C-Programm auf befehl selbst löscht ? Habs mit atexit() und unlink() versucht, leider hat es nich geklappt. Hat mir jemand ne Idee ? Thx Expi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 21. März 2005 Teilen Geschrieben 21. März 2005 Das geht nicht, denn solange ein Programm ausgeführt wird, ist seine EXE-Datei gesperrt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Expi Geschrieben 21. März 2005 Autor Teilen Geschrieben 21. März 2005 Das geht nicht, denn solange ein Programm ausgeführt wird, ist seine EXE-Datei gesperrt. Das bringt mich nich weiter. bissle konstruktiver bitte. muss doch ne möglichkeit geben. und wenns indirekt ist. hauptsache das file is nachher weg. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 21. März 2005 Teilen Geschrieben 21. März 2005 Versuchs mal so: :eat: Es geht nicht, darüber kann man noch seitenweise diskutieren, aber dadurch wirds auch nicht möglicher. Was natürlich geht ist, dass das Programm irgendwo ein Flag setzt und dann beim nächsten Start des Betriebssystems gelöscht wird. Aber solange die Datei ausgeführt wird ist es unmöglich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 21. März 2005 Teilen Geschrieben 21. März 2005 Das bringt mich nich weiter. bissle konstruktiver bitte. muss doch ne möglichkeit geben. und wenns indirekt ist. hauptsache das file is nachher weg. Ich finde es sehr konstruktiv Dir mitzuteilen, dass ein laufendes Programm seine EXE-Datei nicht löschen kann und Du deswegen keine weitere Zeit für eine ohnehin erfolglose Lösungssuche verschwenden brauchst. Ein gerade ausgeführtes Programm kann sich mit normalen Mitteln unter Windows nicht selbst löschen. Soweit mir bekannt, ist es unter Linux und Unix auch nicht möglich. Du kannst lediglich ein anderes Programm "beauftragen", die Datei zu einem Zeitpunkt zu löschen, an dem Dein Programm nicht mehr aktiv ist. Bei Windows wäre der Systemstart solch ein Zeitpunkt. Das ist das Einzige, dass machbar ist. Wie genau Du das anstellen musst, hängt vom von Dir verwendeten Betriebssystem ab. Da Du nicht geschrieben hast, welches OS zum Einsatz kommt, kann ich Dir diesbezüglich nicht weiterhelfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 kann man nicht eine andere exe starten und den befehl geben, die alte exe zu schliessen und zu löschen ? also quasi start end.exe Exit in der alten löschen alte ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 kann man nicht eine andere exe starten und den befehl geben, die alte exe zu schliessen und zu löschen ?Und wer löscht die andere exe? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bmg4ever Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 das könnte gehen, wenn du dann in der end.exe zunächst einen entsprechenden timeout einbaust, wodurch du sichergehst, dass die alte exe gelöscht wird. allerdings bleibt dann ja immmernoch die end.exe... und ich glaub nicht, dass expi sich das dann so vorgestellt ghat, dass dann ne neue exe da ist. wie ist das denn mit linux? wenn ich da nen kindprozess erzeuge (fork() oder so) und dann das ganze durch timeouts so abpasse, dass zuerst der elternprozess beendet wird, dann der kindprozess vom init-prozess übernommen wird. dann löscht der kindprozess die executables des programms und beendet sich. in diesem fall dürfte doch nichts zurückbleiben, oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
U-- °LoneWolf° Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 das wäre eine möglichkeit oder du läst von deinem Programm ein batchfile erstellen. Diese Legst du im temp verzeichnis ab. Des weiteren Erzeugst du einen Reg eintrag in .....(weis den genauen ort nicht mehr)/RunOnce. Zu guter läst lässt du durch dein Programm den Rechner neustarten und schon wird nach dem neustart das Programm gelöscht. Die batch liegt dann zwar noch im temp wird aber nicht mehr automatisch ausgeführt. Der Vorteil du hast nur ne ca 1KB grosse batchfile die vermutlich sowieso irgendwann aus dem Tempverzeichnis fliegt und nicht eine weitere exe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 wie ist das denn mit linux? wenn ich da nen kindprozess erzeuge (fork() oder so) und dann das ganze durch timeouts so abpasse, dass zuerst der elternprozess beendet wird, dann der kindprozess vom init-prozess übernommen wird. dann löscht der kindprozess die executables des programms und beendet sich. Ich glaube nicht, dass der mit fork erzeugte Prozess die exe löschen darf, denn immerhin ist sie ja auch sein process image. Dazu müsste erst mit einem der exec Befehle ein neues process image geladen werden, aber dann hätten wir wieder den Fall mit den zwei ausführbaren Dateien, von denen immer eine übrig bleibt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Expi Geschrieben 22. März 2005 Autor Teilen Geschrieben 22. März 2005 Freut mich einen Stein ins Rollen gebracht zu haben. Scheinbar bin ich nicht der einzige den so ein Vorhaben interssiert. Die BatchFile Variante wäre vlt interessant, da ein batchfile sich selbst löschen kann, und somit auch von der .batch nix übrig bleiben würde. Nur wie erzeuge ich über C den Registry Eintrag ? Welche Funktion ist dafür zuständig ? Kann mir da einer ein Code Beispiel zeigen ? Thx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Glen Coe Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 Schon mal an eine Batch gedacht? Die zur Lauftzeit erstellt wird, die Exe löscht und sich dann selber ins Nirvana beamt? Michael Walz hat dazu vor einiger Zeit auf Codeproject einen sehr guten und vor allem kurzen & knackigen Artikel geschrieben: Writing a self destructing exe file. Gruss, Glen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 Also es geht auf jeden Fall. Warum? Weil ich ein Beispiel kenne Der Nullsoft Uninstaller löscht sich am Ende selbst - zwar nicht "direkt" selbst, aber durch folgenden Trick: The first Delete instruction works (deleting the uninstaller), because the uninstaller is transparently copied to the system temporary directory for the uninstall. Quelle: http://www.nullsoft.com/free/nsis/makensis.htm Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Expi Geschrieben 22. März 2005 Autor Teilen Geschrieben 22. März 2005 Was isn das für ne Sprache? Ich versteh den Syntax net ganz. Thx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BenjieAul Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 Was haste eigentlich vor? Warum willste das sich die Datei nach dem Ausführen automatisch löscht? Willste in dein Programm n Menüpunkt uninstall rein machen? oder wie? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Expi Geschrieben 22. März 2005 Autor Teilen Geschrieben 22. März 2005 Was haste eigentlich vor? Warum willste das sich die Datei nach dem Ausführen automatisch löscht? Willste in dein Programm n Menüpunkt uninstall rein machen? oder wie? ja so in der art. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 The first Delete instruction works (deleting the uninstaller), because the uninstaller is transparently copied to the system temporary directory for the uninstall. Und was passiert mit der Kopie im temp Verzeichnis? Da scheinbar wirklich großes Interesse besteht: Mit "runonce.exe" kann man IMO die Abarbeitung der RunOnce Registry Einträg auch sofort in Gang setzen. Und wer nicht indirekt vorgehen will, der kann auch den Lock auf sein eigenes EXE File entfernen. Wie es geht ist unter http://www.ezds.com/html/sde.html gut beschrieben. Allerdings würde ich das nicht unbedingt als "offizielle" Vorgehensweise betrachten und es nicht unbedingt in produktiv-Code einsetzen. Ich frage mich ohnehin, wozu das Löschen des eigenen Programms in Zeiten des Windows Installers überhaupt noch notwendig sein soll. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Glen Coe Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 *fragt sich grade, ob überhaupt jemand seinen Post gelesen hat* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Stephan B. Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 Man könnte es machen. Dazu muss man nur den Befehl zum löschen geben, dann versucht windows ( bei mir ) ca. 5 sekunden die Datei zu löschen und gibt dann nen Error aus! Wenn man allerdings inherhalb dieser 5 sekunden die anwendung mit dem befehl beendet, ist der lösch befehl unter windows doch noch Aktiv! Also is die danach weg. (Siehe uninstall Dateien von Programmen, die löschen sich danach auch selbst) MfG Stephan Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 So langsam frag ich mich wirklich, wozu man das braucht. Ich meine, kompetente Lösungsansätze gibt's bestimmt, genauso gibt es aber auch schon Lösungen dafür. Mich hat das Problem früher mal beschäftigt, als ich überlegte, wie ich einen "temporären" Trojaner schreiben kann Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Expi Geschrieben 22. März 2005 Autor Teilen Geschrieben 22. März 2005 Danke für die zahlreichen Antworten. Ich habe mich für die Batch Variante nach SelfDestruct() entschieden. Obwohl die _asm Variante um die EXE Lock aufzuheben auch net schlecht ist. Danke nochmals. Expi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 22. März 2005 Teilen Geschrieben 22. März 2005 Wieso machst du nicht einfach eine Installation für deine Exe?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.