6
私のDelphiプログラムを自動削除するにはどうしたらいいですか?私はこのコードを試しました: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
これを可能にする唯一の方法は、アプリケーションの終了時にこれを行う別のプログラム(またはバッチファイル)を呼び出すことです。文字通り、アプリが別の外部ヘルパーに依存することなく、自分自身を削除することは不可能です。 –
唯一の解決策は、ファイルを作成することです。コウモリ? –