删除正在使用的文件

来源:互联网 发布:win10打开网络共享中心 编辑:程序博客网 时间:2024/04/28 09:41

 procedure   DeleteSelf;  
  var  
      pExitProcess:   Pointer;  
      pDeleteFile:   Pointer;  
      pUnmapViewOfFile:   Pointer;  
      hModule:   THANDLE;  
      cBuf:   array[0..MAX_PATH]   of   Char;  
  begin  
      hModule   :=   GetModuleHandle('kernel32');  
      if   hModule   <>   0   then  
      begin  
          pExitProcess   :=   GetProcAddress(hModule,   'ExitProcess');  
          pDeleteFile   :=   GetProcAddress(hModule,   'DeleteFileA');  
          pUnmapViewOfFile   :=   GetProcAddress(hModule,   'UnmapViewOfFile');  
      end   else  
      begin  
          pExitProcess   :=   nil;  
          pDeleteFile   :=   nil;  
          pUnmapViewOfFile   :=   nil;  
      end;  
      hModule   :=   GetModuleHandle(nil);  
      GetModuleFileName(hModule,   cBuf,   Sizeof(cBuf));  
      CloseHandle(THANDLE(4));  
      asm  
          XOR   EAX,   EAX;  
          PUSH   EAX;  
          PUSH   EAX;  
          LEA   EAX,   cBuf;  
          PUSH   EAX;  
          MOV   EAX,   pExitProcess;  
          PUSH   EAX;  
          MOV   EAX,   hModule;  
          PUSH   EAX;  
          MOV   EAX,   pDeleteFile;  
          PUSH   EAX;  
          MOV   EAX,   pUnmapViewOfFile;  
          PUSH   EAX;  
          RET;  
      end;  
  end;  
  end.