Question:
How can I delete my executable while it is running?
Answer:
Under Win32, unless you are running from a removable drive, you
cannot delete a running executable. You can have Windows delete the
executable the next time Windows is ran by adding an entry to the
RunOnce key in the Windows registry under:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
You can name the key anything you like, and specify a command line to
another executable or to a dos command passed to command.com.
Example:
uses
 Registry;
procedure TForm1.Button1Click(Sender: TObject);
var
 reg: TRegistry;
begin
 reg := TRegistry.Create;
 
 with reg do begin
 RootKey := HKEY_LOCAL_MACHINE;
 LazyWrite := false;
 OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce',
 false);
 WriteString('Delete Me!','command.com /c del FILENAME.EXT');
 CloseKey;
 free;
 end;
end;