Laden...

Programm nach Beendung löschen

Erstellt von XXL vor 16 Jahren Letzter Beitrag vor 16 Jahren 4.867 Views
X
XXL Themenstarter:in
95 Beiträge seit 2006
vor 16 Jahren
Programm nach Beendung löschen

Hallo,
ich habe eine .exe (im netz liegend) die bei aufruf einer batchdatei nach c:\temp (lokal)kopiert wird.
dann soll die .exe automatisch gestartet werden.

wenn das programm beendet wird, soll es es auf dem lokalen rechner wieder gelöscht werden...

wie realisiert man das am besten?

danke

G.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo XXL,

ein anderes Programm starten, das wartet bis die kopierte exe beendet ist und sie dann löscht. Hat Ähnlichkeiten mit Sicherer Restart einer Console-App

herbivore

R
22 Beiträge seit 2006
vor 16 Jahren
Mit File.Delete("Pfad");

mfg robar

O
778 Beiträge seit 2007
vor 16 Jahren

Das ein Programm sich selbst löscht geht nicht. Was aber gehen würde, ist, dass dein Programm ein neues Programm generiert (und zwar komplett im Arbeitsspeicher. Das beim Beenden aufruft und das neu erschaffene Programm das Ursprüngliche Prgramm löscht. Das ist aber äußerst kompliziert, zumal das neu erstellte Prgramm auch erstmal warten muss, bis sich das Ursprungsprogramm beendet hat.

M
68 Beiträge seit 2005
vor 16 Jahren

Rein aus Interesse wie generiert man ein Programm in den Arbeitsspeicher und startet es??
Wi eman zu dem Programm kommt wäre vlt. gar nicht so schwer. Man schreibt es in seiner Ide -> kompiliert -> öffnet es im Hexeditor -> kopiert -> und jetzt muss man den Code in den Arbeitsspeicher kriegen -> also ne Variable erstmal z.B. BinaryStream, oder?

Aber wie jetzt starten?????

ich finde das Thema interessant, auch wenn ich es wahrscheinlich nicht so schnell gebrauchen werde 😁

mfg MasterOfDesaster

PS: Das ganze klingt nach einem bösartigen Programm 🤔 🤔

N
750 Beiträge seit 2004
vor 16 Jahren

Original von XXL
Hallo,
ich habe eine .exe (im netz liegend) die bei aufruf einer batchdatei nach c:\temp (lokal)kopiert wird.
dann soll die .exe automatisch gestartet werden.

wenn das programm beendet wird, soll es es auf dem lokalen rechner wieder gelöscht werden...

wie realisiert man das am besten?

danke

G.

die batch-datei sollte das doch können, oder nicht ?

?( wer suchet, der findet auch! :]

3.825 Beiträge seit 2006
vor 16 Jahren

Wenn man eine Exe-Datei umbenennt kann man sie auch löschen, wenn sie gerade in Benutzung ist.

Ob sich das Programm dann selbst löschen kann müsste man mal testen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

M
253 Beiträge seit 2006
vor 16 Jahren

Original von BerndFfm
Wenn man eine Exe-Datei umbenennt kann man sie auch löschen, wenn sie gerade in Benutzung ist.

Ob sich das Programm dann selbst löschen kann müsste man mal testen.

Grüße Bernd

Du kannst aber die exe-Datei nicht umbennen wenn sie in Verwendung ist.

Patrick

EDIT:

Sry, das geht doch...

738 Beiträge seit 2007
vor 16 Jahren

@BerndFfm:
hi,
einfach File.Delete() und den Namen der eigenen *.exe angeben geht nicht. UnauthorizedAccessException. Wär ja auch irgendwie komisch...

O
778 Beiträge seit 2007
vor 16 Jahren

Rein aus Interesse wie generiert man ein Programm in den Arbeitsspeicher und startet es??

kommt darauf an, wie du das Programm erstellst, .NET liefert da ja mehrere Mittelchen, bei der ersten Variante (langsam, aber eindeutig objektorientiert) mit CodeDom stellt du einfach die CompilerSettings um, bei der zweiten Variante (einfach, aber noch langsamer) mit literalem Code genauso (basiert intern ja auf CodeDom, glaub ich zumindest sowas mal gehört zu haben), und bei der dritten Variante (schnell, aber sehr kompliziert) mit Reflection.Emit gibts da auch ne Option im ILGenerator dafür...

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo zusammen,

eine Umbenennung der aktiven EXE geht definitiv. Ob danach das Löschen der umbenannten Datei geht, das müsste ausprobiert werden, und würde mich dann auch interessieren ob das geht 😉

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

A
29 Beiträge seit 2007
vor 16 Jahren

Nein, das geht nicht.
Ich habe es gerade ausprobiert.

B
1.529 Beiträge seit 2006
vor 16 Jahren

Wenn die exe sowieso über eine Batch gestartet wird, kann sie doch genauso gut auch von der Batch wieder gelöscht werden. Mit

start "" /WAIT <<programm>> <<parameter>>

kann man die Batch bis zum Ende des Programms anhalten.

L
333 Beiträge seit 2007
vor 16 Jahren

Wenn die Batch-Datei auf das Beenden des Programms wartet, hast du halt die ganze Zeit über ein Konsolenfenster offen. Könnte u.U. störend sein.