Selbstzerstörung

05/10/2013 14:32 supercracker13#1
Hi Leute,

ich bräuchte mal eure Hilfe.

Also ich möchte ein Programme erstellen, das sich selbst entfernt.

Ich weis schon, das man das nicht in dem selben Programm machen kann, also hab ich überlegt ne .bat datei zu erstellen, das die das programm löscht.

Dann ergab sich folgendes Problem.

Befehl zum löschen:
PHP Code:
del C:\....\Programm.exe 
aber das das nicht sofort geht und sich das programm erst beenden muss, muss es ja irgendwie warten.

da hab ich dann folgenden code gefunden

PHP Code:
ping 127.0.0.1 -n 10>nul
msg 
test 
das Program hat ca 10 sekunden gewartet (muss nich genau sein) und dann die MessageBox geöffnet.
Das Problem ist, da kommt so ein cmd Fenster.

Das sieht nicht gerade professionell aus und deshalb wollte ich abhilfe schaffen.

Hätte jemand nen Vorschlag wie ich das machen könnte ???
(Muss nicht batch sein, alles was man mit c# schaffen kann ich erwünscht)
05/10/2013 14:39 Schlüsselbein#2
Gibt da mehrere Möglichkeiten. Zum einen die angesprochene Batch, dann sicherlich auch über ShellExecute und zuletzt könntest du dafür ein anderen Prozess missbrauchen (Stichwort code injection).
05/10/2013 14:50 tolio#3
google mal nach ner "melt" funktion

mit ner bat ist aber aufjedenfall die einfache variante
05/10/2013 14:57 dready#4
Code:
:DELTRY
echo hier datei löschen versuche


if exist C:\blabla.txt goto DELTRY
Jub Batch geht mit Sicherheit am einfachsten
05/10/2013 17:54 supercracker13#5
Ja ich guck mal nach melt.

Ansonsten melde ich mich noch mal
05/10/2013 18:05 Master674b#6
Hatten das bei uns mit dem Updater (im Fall er muss sich selbst updaten) wie folgt gelöst:

Code:
string fileName = Path.GetFileName(_launcherPath);
var startInfo = new ProcessStartInfo("cmd.exe", "/C ping localhost -n 1 -w 2000 > Nul & del \"" + fileName + "\" & ren \"WoWPlus.exe.new\" \"" + fileName + "\" & start \"\" \"" + fileName + "\"");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(startInfo).Dispose();
Application.Exit();
05/10/2013 20:58 tolio#7
wenn um updates geht dann es so aussehen, ist ungetestet aus nem älternen projekt
Code:
            Dim objWriter As System.IO.StreamWriter
            objWriter = File.AppendText(FILE_NAME)
            objWriter.WriteLine("@echo off")
            objWriter.WriteLine("echo ################################")
            objWriter.WriteLine("echo Update in progress. Please wait.")
            objWriter.WriteLine("echo ################################")
            objWriter.WriteLine("PING 1.1.1.1 -n 1 -w 3000 >NUL")
            objWriter.WriteLine("TASKKILL /F /IM " & """" & filename & """")
            objWriter.WriteLine("PING 1.1.1.1 -n 1 -w 1000 >NUL")
            objWriter.WriteLine("DEL /F " & """" & Application.ExecutablePath & """")
            objWriter.WriteLine("ren " & """" & Application.ExecutablePath & "new" & """" & " " & """" & filename & """")
            objWriter.WriteLine("Start " & """" & """" & " " & """" & Application.ExecutablePath & """")
            objWriter.Close()
05/10/2013 21:21 supercracker13#8
Ok ich werde es mal probieren danke schonmal
05/21/2013 16:44 Hybrox#9
something used to be here