Текущий архив: 2006.05.21;
Скачать: CL | DM;
Вниз
Стереть саму себя Найти похожие ветки
← →
Негодяй © (2006-04-28 09:45) [0]Такой вопрос: как можно стереть саму исполняемую прогу?
← →
Чапаев © (2006-04-28 10:10) [1]Проще всего: создать из программы bat-файл, который после завершения программы сотрёт программу и себя самого.
А вообще поищи в FAQ"ах, тема весьма заезженная...
← →
Негодяй © (2006-04-28 10:12) [2]Чапаев,
Thanx. Чё-то не нашел ниче по теме%)
Поищу ещё.
← →
ЮЮ © (2006-04-28 10:18) [3]Не писать таких программ, которые самому же после после первого запуска стереть хочется :)
← →
TUser © (2006-04-28 10:54) [4]На delphikingdom есть статья по этому поводу. Из способов
- запустить батник
a:
del myprog.exe
if exists myprog.exe goto a
del mybat.bat
- at
- еще много.
← →
mfender © (2006-04-28 16:47) [5]Вариант Х: программа при запуске создаёт вышеуказанный .BAT, в котором написанно её удаление, а при закрытии запускать его.
← →
Сергей М. © (2006-04-28 16:50) [6]
> mfender © (28.04.06 16:47) [5]
Это далеко не "сама себя".
← →
Gydvin © (2006-04-28 17:00) [7]
procedure TForm1.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;
← →
TStas © (2006-04-28 19:37) [8]program AHarakiri;
{$APPTYPE CONSOLE}
uses
SysUtils,
Classes, Windows,ShellAPI;
procedure Harakiri(Delay: Integer);
var
list: TStringList;
str: String;
ScriptPath: String;
begin
list:=TStringList.Create;
str:=ParamStr(0);
str:=StringReplace(str, "\", "\\", [rfReplaceAll]);
list.Add("var exeFile = ""+str+""");
list.Add("var fso=WScript.CreateObject("Scripting.FileSystemObject")");
list.Add("WScript.Sleep("+IntToStr(Delay)+")");
list.Add("fso.DeleteFile(exeFile)");
list.Add("fso.DeleteFile(WScript.ScriptFullName)");
ScriptPath:=ExtractFilePath(ParamStr(0))+"killer.js";
List.SaveToFile(ScriptPath);
ShellExecute(0, nil, PChar(ScriptPath), "", "", SW_SHOW);
list.Free;
end;
begin
{ TODO -oUser -cConsole Main : Insert code here }
ReadLn;
Harakiri(100);
end.
← →
TStas © (2006-04-28 19:43) [9]Вдогонку: может способ чуть кривой, но 100% рабочий. Процедура харакири пишет скрипт, который убъет сначала екзешник, потом и себя самого (скриптам так можно). Задержка нужна, чтобы прогамма успела закрыться, ей при необходимости можно играться.
Страницы: 1 вся ветка
Текущий архив: 2006.05.21;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.012 c