6
如何自動刪除,我的Delphi程序?我試過這個代碼:德爾福自我刪除程序
procedure DeleteSelf;
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;
但它不起作用,不要刪除文件。我的程序是控制檯。 謝謝!
你究竟在做什麼?剛退出有什麼問題?這看起來像是Win16的一次回望之旅。 – bmargulies
我看到這種可能的唯一方法是調用另一個程序(或批處理文件),在應用程序退出時執行此操作。對於一個應用程序來說,刪除自己完全不可能,而不依賴於另一個外部幫手來這樣做。 –
所以唯一的解決方案是創建一個文件。蝙蝠? –