自删除

 

例一:

ContractedBlock.gifExpandedBlockStart.gifCode
unit   Unit1;   
    
interface   
    
uses   
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,   
      Dialogs;   
    
type   
      TForm1   
=   class(TForm)   
          
procedure   FormClose(Sender:   TObject;   var   Action:   TCloseAction);   
      
private   
          
{   Private   declarations   }   
          
procedure     closeme;   
      
public   
          
{   Public   declarations   }   
      
end;   
    
var   
      Form1:   TForm1;   
    
implementation   
    
{$R   *.dfm}   
    
{   TForm1   }   
    
procedure   TForm1.closeme;   
      
var   f:textfile;   
begin   
      assignfile(f,
'c:\delme.bat');   
      rewrite(f);   
      writeln(f,
'@echo   off');   
      writeln(f,
':loop');   
      writeln(f,
'del   '+'"'+application.ExeName+'"');   
      writeln(f,
'if   exist   '+'"'+application.ExeName+'"'+'   goto   loop');   
      writeln(f,
'del   c:\delme.bat   ');   
      closefile(f);   
      winexec(PChar(
'c:\delme.bat'),   SW_HIDE);   
      Application.Terminate;   
end;   
    
procedure   TForm1.FormClose(Sender:   TObject;   var   Action:   TCloseAction);   
begin   
      closeme;   
end;   
    
end.

以上自删除可能会在SYStem32目录失效,可能是系统保护功能。例二做了一些过改进如下。

例二:

procedure DelMe;
var
  F: textfile;
  BatchFileName: string;
  ProcessInfo: TProcessInformation;
  StartUpInfo: TStartupInfo;
begin
  BatchFileName := 'c:\' + 'Deleteme.bat';
  AssignFile(F, BatchFileName);
  Rewrite(F);
  WriteLn(F, ':try');
  WriteLn(F, 'del "' + ParamStr(0) + '"');
  WriteLn(F, 'if exist "' + ParamStr(0) + '"' + ' goto try');
  WriteLn(F, 'del %0');
  CloseFile(F);
  FillChar(StartUpInfo, SizeOf(StartUpInfo), $00);
  StartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartUpInfo.wShowWindow := SW_HIDE;
  if CreateProcess(nil, PChar(BatchFileName), nil, nil, False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo) then
  begin
    CloseHandle(ProcessInfo.hThread);
    CloseHandle(ProcessInfo.hProcess);
  end;
end;

转载于:https://www.cnblogs.com/bsoom/archive/2009/11/15/1603255.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值