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.
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
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.
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 🤔 🤔
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 ?
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
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...
@BerndFfm:
hi,
einfach File.Delete() und den Namen der eigenen *.exe angeben geht nicht. UnauthorizedAccessException. Wär ja auch irgendwie komisch...
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...
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!”
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.
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.