Как сделать чтобы запущеный 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
}
}
Оценка: 0. | Оценило 0 человека.
ВНИМАНИЕ
Уважаемые гости, хотим обратить Ваше внимание на то, что все представленные работы на этом сайте получены с публичных ресурсов, находятся в свободном доступе, не являются уникальными и не подходят для их сдачи "как есть".
Если вы обладаете авторским правом на какую либо информацию, размещенную на нашем сайте и не согласны с её общедоступностью, обязательно сообщите нам об этом.
Данные работы Вы можете использовать в качестве дополнительных материалов для написания своего реферата либо любой другой работы.
В ПОМОЩЬ УЧАЩИМСЯ
Мы настоятельно рекомендуем нашим пользователям самостоятельно выполнять все работы. Но бывают ситуации, когда нет возможности, либо элементарно времени, чтобы самому заниматься той или иной работой. В этом случае можно заказать выполнение за вас реферата, курсовой и т.д. Но будет ли такая работа соответствовать всем вашим критериям? Сомневаемся. Поэтому хотим дать вам хороший совет. Найдите на нашем сайте работу, максимально подходящую под ваши критерии. Закажи повышение оригинальности и получите уникальную работу для сдачи. Это сэкономит вам деньги и вы получите именно то, что хотели.
Обратная связь
По всем интересующим вас вопросам обращайтесьна почту:
Если у вас есть интересная работа и вы хотите ей поделиться, присылайте ее нам и мы обязательно разместим ее на нашем сайте, а пользователи обязательно скажут вам спасибо: