Мой.ЧудоФорум.Ру
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Добавить в закладки
Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск

Вход

Забыли пароль?

Последние темы
» Как снять "защиту от записи" с MicroSD?
Как программе удалить саму себя EmptyВс Ноя 02 2014, 14:18 автор dimka

» Исходники игр на Паскале
Как программе удалить саму себя EmptyЧт Окт 16 2014, 13:18 автор tqq

» Помогите разблокировать smartbuy micro CD.
Как программе удалить саму себя EmptyСр Сен 24 2014, 14:40 автор Unearthly

» Исходники программ на Делфи для скачивания
Как программе удалить саму себя EmptyСр Июл 16 2014, 08:15 автор aleator

» Как прошить телефон Nokia?
Как программе удалить саму себя EmptyВт Май 06 2014, 12:42 автор vovan17

» Самопроизвольное отключение ноутбука
Как программе удалить саму себя EmptyВт Июл 09 2013, 21:17 автор Aleksei

» МР3-плеер NEXX nf-810
Как программе удалить саму себя EmptyПн Июл 01 2013, 09:11 автор Vitaliy_82

» Как снять защиту от записи на MicroSD
Как программе удалить саму себя EmptyВт Мар 26 2013, 16:25 автор katja*****

» Как передавать большие файлы с одного компьютера на другой быстро?
Как программе удалить саму себя EmptyПн Окт 01 2012, 20:07 автор irko

Счетчики
Rambler's Top100
Все файлы, находящиеся на сайте, были найдены в сети Интернет как свободно распространяемые и добавлены исключительно в ознакомительных целях.
Перепечатка материалов (в любом виде) с данного сайта без письменного разрешения администратора запрещена.
Copyright ©2010-2011 Mine.ChudoForum.Ru - Все права защищены

Как программе удалить саму себя

Перейти вниз

Как программе удалить саму себя Empty Как программе удалить саму себя

Сообщение автор den Чт Апр 21 2011, 14:07

Первый способ:
uses
Windows, SysUtils;

procedure DeleteMe;
var
BatchFile: TextFile;
BatchFileName: string;
ProcessInfo: TProcessInformation;
StartUpInfo: TStartupInfo;
begin
{ создаём бат-файл в директории приложения }
BatchFileName := ExtractFilePath(ParamStr(0)) + '$$336699.bat';

{ открываем и записываем в файл }
AssignFile(BatchFile, BatchFileName);
Rewrite(BatchFile);

Writeln(BatchFile, ':try');
Writeln(BatchFile, 'del "' + ParamStr(0) + '"');
Writeln(BatchFile,
'if exist "' + ParamStr(0) + '"' + ' goto try');
Writeln(BatchFile, 'del "' + BatchFileName + '"');
CloseFile(BatchFile);

FillChar(StartUpInfo, SizeOf(StartUpInfo), $00);
StartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
StartUpInfo.wShowWindow := SW_HIDE;

if CreateProcess(nil, PChar(BatchFileName), nil, nil,
False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo,
ProcessInfo) then
begin
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
end;
end;

А вот тот же способ, но немного модифицированный:

program delete2;

uses
SysUtils,
windows;

var
BatchFile: TextFile;
BatchFileName : string;
TM : Cardinal;
TempMem : PChar;

begin
BatchFileName:=ExtractFilePath(ParamStr(0))+ '$$336699.bat';


AssignFile(BatchFile, BatchFileName);
Rewrite(BatchFile);

Writeln(BatchFile,':try');
Writeln(BatchFile,'del "' + ParamStr(0) + '"');
Writeln(BatchFile,'if exist "' + ParamStr(0) + '" goto try');
Writeln(BatchFile,'del "' + BatchFileName + '"');
CloseFile(BatchFile);

TM:=70;
GetMem (TempMem,TM);
GetShortPathName (pchar(BatchFileName), TempMem, TM);
BatchFileName:=TempMem;
FreeMem(TempMem);

winexec(Pchar(BatchFileName),sw_hide);
halt;
end.
den
den
Модератор
Модератор

Сообщения : 36
Благодарности : 11

https://mine.123.st

Вернуться к началу Перейти вниз

Как программе удалить саму себя Empty Re: Как программе удалить саму себя

Сообщение автор den Чт Апр 21 2011, 14:07

Второй способ:

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;

den
den
Модератор
Модератор

Сообщения : 36
Благодарности : 11

https://mine.123.st

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения