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
我看到这种可能的唯一方法是调用另一个程序(或批处理文件),在应用程序退出时执行此操作。对于一个应用程序来说,删除自己完全不可能,而不依赖于另一个外部帮手来这样做。 –
所以唯一的解决方案是创建一个文件。蝙蝠? –