We don't display ads so we rely on your Bitcoin donations to 1KWEk9QaiJb2NwP5YFmR24LyUBa4JyuKqZ
Post date: Mar 8, 2010 6:26:41 PM
This procedure can be used to close the current instance of the program and delete the file, thereby removing all trace of the file from a computer.
It is useful in installation applications.
program DeleteSelf;{ Website: www.delphi.co.nr Tested: Windows XP} uses Windows;procedure xDeleteSelf;var module: HMODULE; buf: array[0..MAX_PATH - 1] of char; p: ULONG; hKrnl32: HMODULE; pExitProcess, pDeleteFile, pFreeLibrary: pointer;begin module := GetModuleHandle(nil); GetModuleFileName(module, buf, sizeof(buf)); CloseHandle(THandle(4)); p := ULONG(module) + 1; hKrnl32 := GetModuleHandle('kernel32'); pExitProcess := GetProcAddress(hKrnl32, 'ExitProcess'); pDeleteFile := GetProcAddress(hKrnl32, 'DeleteFileA'); pFreeLibrary := GetProcAddress(hKrnl32, 'FreeLibrary'); asm lea eax, buf push 0 push 0 push eax push pExitProcess push p push pDeleteFile push pFreeLibrary ret end;end;begin xDeleteSelf;end.