DeleteMe

来源:互联网 发布:文玩市场淘宝三人行 编辑:程序博客网 时间:2024/05/22 17:26

程序删除自身

 

// 利用批处理文件构造一个循环,只要在 OnClose() 中调用 DeleteMe() 就可以删除自身
procedure DeleteMe();
var
   BatchFile: TextFile;
   BatchFileName:
string;
   ProcessInfo: TProcessInformation;
   StartUpInfo: TStartupInfo;
begin
   BatchFileName :
= ExtractFilePath(ParamStr(0)) + '_deleteme.bat';
   AssignFile(BatchFile, BatchFileName);
   Rewrite(BatchFile);

   Writeln(BatchFile,
':try');
   Writeln(BatchFile,
'del "' + ParamStr(0) + '"');
   Writeln(BatchFile,
    
'if exist "' + ParamStr(0) + '"' + ' goto try');
   Writeln(BatchFile,
'del %0');
   CloseFile(BatchFile);

   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;
原创粉丝点击