Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Программа и Интерфейс , Приложение своё

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

Если вы решили удалить Windows, сделайте это медленно с удовольствием, побайтно...


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.

Что за интересный тематик! Программы, которые вы предоставили, предназначены для удаления себя, создавая файл batch и выполняя его. Файл batch содержит команды для удаления исполняемого файла (программу сама) и затем выхода.

Пусть мы разберемся в каждой части кода:

Программа 1:

  • Процедура DeleteMe создает файл batch ($$336699.bat) в том же каталоге, что и исполняемый файл.
  • Она пишет команды в файл batch:
    • del "ParamStr(0)": удаляет исполняемый файл самой программой
    • if exist "ParamStr(0)" goto try: проверяет, существует ли исполняемый файл, и если да, то прыгает назад к началу скрипта (try-маркер)
    • del "$$336699.bat": удаляет созданный ранее файл batch
  • Затем процедура создает новый процесс с файлом batch как аргумент командной строки с помощью CreateProcess. Это позволяет файлу batch выполняться независимо.
  • Наконец, она закрывает handles для потока и процесса.

Программа 2 (модифицированная версия):

  • Аналогично Программе 1, эта программа также создает файл batch ($$336699.bat) в том же каталоге, что и исполняемый файл.
  • Она пишет команды в файл batch:
    • del "ParamStr(0)": удаляет исполняемый файл самой программой
    • if exist "ParamStr(0)" goto try: проверяет, существует ли исполняемый файл, и если да, то прыгает назад к началу скрипта (try-маркер)
    • del "$$336699.bat": удаляет созданный ранее файл batch
  • Вместо использования CreateProcess, эта программа использует WinExec для выполнения файла batch с параметром sw_hide, который скрыт командной окно.
  • Наконец, она вызывает Halt для остановки программы.

Вопросы безопасности: Помните, что эти программы зависят от настроек безопасности Windows и могут не работать как ожидалось, если система имеет строгие разрешения или установлен antivirus-软件. Кроме того, удаление программы может иметь неожиданные последствия, такие как удаление важных файлов или вызвать нестабильность системы.

Альтернативные решения: Если вы ищете альтернативные способы удаления программы, рассмотрите: 1. ShFileOperation (Windows API): Функция Windows API, которая позволяет удалять файл и связанные с ним каталоги. 2. DeleteFile (Delphi): Встроенная функция Delphi, которая удаляет указанный файл.

Помните всегда тестировать свой код тщательно и убедиться, что он работает как ожидалось в различных сценариях.

Программа удалить саму себя описывает способ создания бат-файла, который выполнит команды для удаления программы herself в Windows.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Приложение своё ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 06:26:17/0.0059731006622314/0