Jak usunąć program po jego zamknięciu
Często spotykany problem - np. w aplikacjach - instalatorach. Mianowicie jak program ma usunąc samego siebie? W tym celu stworzony zostanie program który usunie pliki naszego programu. Program zostanie stworzony w katalogu Windows\Temp, gdyż ten katalogu jest często oprózniany, a nasz program zajmował będzie tylko 18 bajtów! Tak, to będzie program dosowy z rozszerzeniem *.bat, który najpierw usunie naszą aplikacją, a potem samego siebie. A więc oto kod:
uses SysUtils; var TF: TextFile; begin PostMessage(Handle, wm_Quit, 0, 0); // zamkniecie naszej aplikacji AssignFile(TF, '%windir%\Temp\kill.bat'); // zapisz plik Rewrite(TF); Writeln(TF, ':kill'); Writeln(TF, 'cd ' + ParamStr(0)); Writeln(TF, 'del ' + ExtractFileName(ParamStr(0))); Writeln(TF, 'if exist ' + ExtractFileName(ParamStr(0))+ ' goto kill'); Writeln(TF, 'del %0'); CloseFile(TF); // uruchom program WinExec('%windir%\Temp\kill.bat', sw_Hide); end.
6 komentarzy
<quote>Writeln(TF, 'if exist ' + ExtractFileName(ParamStr(0))+ ' goto kill');</quote>
Czy to oznacza, że plik będzie "usuwany" póki nie zniknie ?
(Ciekawie by było, gdyby użytkownik nie miał praw do usuwania, lub zablokował usuwanie tego pliku...)
%windir% - C:\Windows
"Zmienne" możemy zobaczyć poprzez polecenie set.
"Program zostanie stworzony w katalogu Windows\Temp, gdyż ten katalogu jest często opróżniany"
Plik bat może usunąć samego siebie poprzez polecenie del:
del "C:\Windows\Temp\kill.bat"
i będzie ok ;-)
Gówniana metoda. Zostawia syf na dysku.
Polecam metody: Process Injection lub Dll Injection. Są śmiesznie proste w napisaniu (wygoglaniu gotowca), a potem użyciu. AV się nie burzą o dziwo.
Wtedy twój soft, usunie inna aplikacja, która zostanie zaszczepiona kodem lub dll-ka, które to usuwają twój soft. Używam tego do aktualizacji swojego softa bez zapisywania żadnych dodatkowych plików na dysku.