FAQ2634D.txt   Trying to delete a running .exe?

Category   :Windows API

Platform    :All

Product    :All 32 bit 

 

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;