Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.029 c
2-1146205098
Alien1769
2006-04-28 10:18
2006.05.21
Работа с базой данных в сети. Выбор сервера или его альтернативы


2-1146211942
MegaVolt
2006-04-28 12:12
2006.05.21
Странное поведение дельфи :(


9-1129234201
$noopy.MC
2005-10-14 00:10
2006.05.21
Зацените игруху мою (openGL)


2-1146230106
Raptoridzevv
2006-04-28 17:15
2006.05.21
прозрачная форма


8-1135447050
Nigel
2005-12-24 20:57
2006.05.21
System volume