У вас вопросы?
У нас ответы:) SamZan.net

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

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.7.2025

Как сделать чтобы запущеный 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

}

}

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.rsdn.ru/




1. Расчет численности ремонтного и обслуживающего персонала
2. Обчислення визначених інтегралів за формулами прямокутників трапецій та Сімпсона
3. ПРОСВЕЩЕНИЕ 1980 ББК 85
4. Отраслевая структура мирового хозяйства
5. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата медичних наук Київ ~ Дисер1
6. тема принципов российского уголовного права
7. География п~ні бойынша ішкі жиынты~ ба~ылау ж~мысыны~ спецификациясы 1
8. цивилизации Говоря языком В
9. Самый большой обман на современном рынке медицины
10. П.html