Selbstzerstörung
Übersicht

PhloxBetreff: Selbstzerstörung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Doch, also wenn man sich mal das Problem durch den Kopf gehen lässt, kommt man auf die Lösung: ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke! Das funktioniert! | ||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. ![]() |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group