Selbstzerstörung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Phlox

Betreff: Selbstzerstörung

BeitragDo, Jan 03, 2008 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
heute hab ich mich mit der Problematik befasst, wie eine Exe sich selbst
löscht. Dies funktioniert ja auch bei Uninstallern.
Bisher bin ich aber gescheitert.
Auch mit einer/zwei temporären Datei(en) funktioniert das nicht:

Code: [AUSKLAPPEN]
f=WriteFile("C:\temp.bat")
WriteLine f,"Del "+CurrentDir()+"main.exe"
CloseFile f
f=WriteFile("C:\temp2.bat")
WriteLine f,"C:\temp.bat"
CloseFile f
ExecFile "C:\temp2.bat"
End


Wie schreibt man nun soetwas mit Blitz, ohne dass eine Datei übrigbleibt?

MfG
 

HyDr0x

BeitragDo, Jan 03, 2008 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht gibts da irgendeine Uninstaller Exe von Windows aus die du ansprechen musst, sowas wie der install Shield nur rückwärts. Das wäre das einzige was mir dazu einfallen würde ... .
 

Dreamora

BeitragDo, Jan 03, 2008 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Blitz3D / Blitz2D garnicht.
BlitzPlus und BlitzMax bieten die Möglichkeit des CreateProcess wo sie eine Bat theoretisch starten können, die erst einmal wartet für X ms in denen sich das blitz programm beendet und es dann löschen.
Das ist nötig weil andernfalls das bat programm einfach mitbeendet wird (bei ExecFile)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Willi die Rübe

BeitragDo, Jan 03, 2008 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch, also wenn man sich mal das Problem durch den Kopf gehen lässt, kommt man auf die Lösung: Very Happy

Code: [AUSKLAPPEN]
f=WriteFile("0.bat")
WriteLine f, ":check"
WriteLine f, "DEL main.exe"
WriteLine f, "If EXIST main.exe GOTO check"
WriteLine f,"Del 0.bat"
CloseFile f
ExecFile "0.bat"


Edit: Und es funktioniert mit B2D/3D
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon
Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX

At the Farewell Party visit: MySpace | Homepage
 

Phlox

BeitragDo, Jan 03, 2008 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke! Das funktioniert!
 

ChristianK

BeitragDo, Jan 03, 2008 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
So geht's:

Code: [AUSKLAPPEN]
While Not KeyDown( 1 )
   Cls
   
   Text 10, 10, "Drücke Escape und ich werde gelöscht!"
   
   Flip
Wend

DeleteExe( )
End

Function DeleteExe( )
   Local temp$ = GetEnv( "TEMP" )
   Local file = WriteFile( temp$ + "\DeleteEXE.bat" )
   
   WriteLine file, "@echo off"
   WriteLine file, ":loop"
   WriteLine file, "del C:\MyEXE.exe"
   WriteLine file, "if exist C:\MyEXE.exe goto loop"
   WriteLine file, "del " + temp$ + "\DeleteEXE.bat"
   
   CloseFile file
   
   ExecFile temp$ + "\DeleteEXE.bat"
End Function

Edit: *grummel* wieder zu langsam -.-

Edit2:
Wenn dich das Konsolenfenster stört, das beim Starten der Bat-Datei angezeigt wird, speichere das hier als Userlib:

Code: [AUSKLAPPEN]
.lib "shell32.dll"

ShellExecuteA%( hwnd%, cmd$, file$, param$, dir$, show% )

Und ersetze "ExecFile temp$ + "\DeleteEXE.bat" durch "ShellExecuteA( 0, "open", temp$ + "\DeleteEXE.bat", "", "", 0 )".
Schon kriegt der User nix mehr mit. Smile
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group