两种方法:
1、借助于 bat 文件。在准备删除自身时,写一下 bat 文件,将执行它,执行后,立刻终止程序运行,文件中要有 删除程序 的语句
del 程序名.exe
在最后,加上 del %0% 这一句的意思是,将 bat 文件删除。
2、是借助下面的语句,可以将程序自身删除。
注意:里面要用到 shellapi 。
Delphi&CB代码如下:
//////////////////////////////////////////////
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;
//////////////////////////////////////////////