Как сделать чтобы запущеный exe сам себя удалил

Как сделать чтобы запущеный exe сам себя удалил?

Шитц Виталий

Как сделать чтобы запущеный exe сам себя удалил? Можно сгегерировать BAT-файл и выполнить его, а можно и по другому:

Этот код требует, чтобы была определена переменная окружения COMSPEC, работает на всех ОС Windows.\

После вызова функции нужно немедленно выходить из программы, иначе не сработает.

Автор Tony Varnas.

BOOL SelfDelete()

{

TCHAR szFile[MAX_PATH], szCmd[MAX_PATH];

If((GetModuleFileName(0,szFile, MAX_PATH)!=0) &;&;

(GetShortPathName(szFile, szFile, MAX_PATH)!=0))

{

Lstrcpy(szCmd,”/c del “);

Lstrcat(szCmd, szFile);

Lstrcat(szCmd,” >> NUL”);

If((GetEnvironmentVariable(“ComSpec”,szFile, MAX_PATH)!=0) &;&;

((INT)ShellExecute(0,0,szFile, szCmd,0,SW_HIDE)>32))

Return TRUE;

}

Return FALSE;

}

Следующий код работает только под NT, автор Gary Nebbett:

Include <windows. h>

Int main(int argc, char *argv[])

{

Char buf[MAX_PATH];

HMODULE module;

Module = GetModuleHandle(0);

GetModuleFileName(module, buf, MAX_PATH);

CloseHandle((HANDLE)4);

__asm

{

Lea eax, buf

Push 0

Push 0

Push eax

Push ExitProcess

Push module

Push DeleteFile

Push UnmapViewOfFile

Ret

}

Return 0;

}

Ну а это – вариант предыдущего, но под Win9x, автор Tony Varnas.

Int main(int argc, char *argv[])

{

Char buf[MAX_PATH];

HMODULE module;

Module = GetModuleHandle(0);

GetModuleFileName(module, buf, MAX_PATH);

__asm

{

Lea eax, buf

Push 0

Push 0

Push eax

Push ExitProcess

Push module

Push DeleteFile

Push FreeLibrary

Ret

}

Return 0;

}

Ну и два последних в одной функции:

Void SelfDelete()

{

Char buf[MAX_PATH];

HMODULE module;

DWORD fnFreeOrUnmap;

Module = GetModuleHandle(0);

GetModuleFileName(module, buf, MAX_PATH);

// На случай Win9x

If(0x80000000 &; GetVersion())

{

FnFreeOrUnmap = FreeLibrary;

}

// для ядра WinNT

Else

{

FnFreeOrUnmap = UnmapViewOfFile;

CloseHandle((HANDLE)4);

}

__asm

{

Lea eax, buf

Push 0

Push 0

Push eax

Push ExitProcess

Push module

Push DeleteFile

Push fnFreeOrUnmap

Ret

}

}


1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (No Ratings Yet)
Loading...

Зараз ви читаєте: Как сделать чтобы запущеный exe сам себя удалил