![]() |
Eine exe löscht sich selbst!
Hallo ich hab folgenden Code gefunden, eine exe Datei bzw. Programm löscht sich selbst. Ich selber verstehe den Code nicht, deswegen frage ich was hält ihr davon? Wird wirklich alles gelöscht?
Delphi-Quellcode:
procedure SelfEfface;
var F: Textfile; begin AssignFile(F,Changefileext(Paramstr(0),'.bat')); Rewrite(F); Writeln(F,':1'); Writeln(F, Format('Erase "%s"',[Paramstr(0)])); Writeln(F, Format('If exist "%s" Goto 1',[Paramstr(0)])); Writeln(F, Format('Erase "%s"',[ChangeFileExt(Paramstr(0),'.bat')])); CloseFile(F); WinExec(PChar(ChangeFileExt(Paramstr(0),'.bat')),SW_HIDE); Halt; end; procedure TForm1.Button1Click(Sender: TObject); begin SelfEfface; end; |
Re: Eine exe löscht sich selbst!
Es wird eine .bat erzeugt dann wird die bat gestartet und das Programm beendet. Die Batch welche versucht solange die Exe zu löschen, bis das erfolgreich ist. Anschliessend löscht sie sich selber.
|
Re: Eine exe löscht sich selbst!
Dann kann man den Code ruhig verwenden, wie ich verstehe? Ich hab aber gelesen, dass man das nie hin bekommt, aber es geht doch.
|
Re: Eine exe löscht sich selbst!
Eine Exe kann sich ja auch nicht selber löschen, über den Umweg der batch geht es aber. :)
|
Re: Eine exe löscht sich selbst!
Ja direkt nicht, ist klar, aber indirekt doch.
|
Re: Eine exe löscht sich selbst!
Diese Lösung schläg aber auch fehle wenn die Exe in Verzeichnissen mit beschränkten Zugriff liegt (C:\Programme\...). Dann nützt dir auch eine Batch-Datei nichts.
|
Re: Eine exe löscht sich selbst!
Kann man die Funktion vielleicht erweitern, dass sie in allen Verzeichnissen gut funktioniert?
|
Re: Eine exe löscht sich selbst!
Nein, weil das Problem nicht am Tool liegt, sondern an den Rechten des angemeldeten Benutzers auf das Verzeichnis, in dem die Anwendung liegt
|
Re: Eine exe löscht sich selbst!
Welche Fehlermeldung kommt denn? Hab XP und bei mir geht's überall.
Da wird bestimmt gefragt, ob man die bat Datei ausführen soll oder nicht, oder doch nicht? Wenn ja einfach erlauben und die bat erledigt ihre Sache, oder? |
Re: Eine exe löscht sich selbst!
Hi, die .bat könnte auch ins temp-Verzeichnis geschrieben werden.
Delphi-Quellcode:
uses
ShellAPI; procedure DeleteSelf; function GetTmpDir: string; var pc: PChar; begin pc := StrAlloc(MAX_PATH + 1); GetTempPath(MAX_PATH, pc); Result := string(pc); StrDispose(pc); end; function GetTmpFileName(ext: string): string; var pc: PChar; begin pc := StrAlloc(MAX_PATH + 1); GetTempFileName(PChar(GetTmpDir), 'DeleteSelf', 0, pc); Result := string(pc); Result := ChangeFileExt(Result, ext); StrDispose(pc); end; var BatchFile: TStringList; BatchFileName: string; begin BatchFileName := GetTmpFileName('.bat'); FileSetAttr(ParamStr(0), 0); BatchFile := TStringList.Create; with BatchFile do begin try Add('@echo off'); Add(':retry'); Add(Format('Erase "%s"', [ParamStr(0)])); Add(Format('If exist "%s" Goto retry', [ParamStr(0)])); Add(Format('Erase "%s"', [BatchFileName])); SaveToFile(BatchFileName); ShellExecute(0, 'Open', PChar(BatchFileName), nil, nil, SW_HIDE); finally BatchFile.Free; end; Halt; end; end; |
Re: Eine exe löscht sich selbst!
Dann bist du lokaler Admin. Das reicht aber unter Vista auch nicht mehr aus. Ohne Adminrechte besitzst man keine Schreibrechte im Programmverzeichnis. Das Programm kann deshalb dort keine Batchdatei erstellen und auch ein Erstellen an einem Ort mit Schreibrechten würde nichts bringen, da die Batch dann die Original-Exe nicht löschen könnte.
|
Re: Eine exe löscht sich selbst!
ich könnte sowas ähnliches für ein SetUp gebrauchen, nachdem mein Programm installiert ist, soll sich das Setup löschen, üblicherweise befindet sich diese auf dem Desktop, funktioniert das löschen da? und wie sieht's mit einem USB Stick aus?
|
Re: Eine exe löscht sich selbst!
Dann macht vorher jemand den Schreibschutz auf den USB Stick und fertig...
|
Re: Eine exe löscht sich selbst!
Warm sollte ich mein Setup lsöchen wollen? Eventuell will es der Kunde noch woanders installieren oder irgendwo sichern, damit er es später wieder installieren kann.
Was passiert bei dir? Der Benutzer installiert das Programm und wundert sich, dass das Setup weg ist. |
Re: Eine exe löscht sich selbst!
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz