(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Решение задач: как программе удалить саму себя или как изменить название исполняемого файла

Источник: pblog
Crivel

Введение

В интернете просматривая форумы по программированию я наталкивался на вопросы связанные c вопросом "Как программу заставить удалить или переименовать себя во время исполнения". В этой статье описывается самый элементарный способ.

Что нужно?

Borland Delphi желательно 7 - требует установки
Блокнот (notepad.exe) - стоит на всех компьютерах с Windows
cmd.exe - стоит на всех компьютерах с Windows

Начинаем

Зачем нам нужен блокнот и cmd.exe спросите вы?
Мы для решения этой задачи будем использовать Пакетный файл, подробнее: В Википедии
Функция для удаления:

function RemoveApp : boolean;

var

batfile : TextFile; // переменная файла

begin

try // блок try..except для обработки исключений (ошибок)

RemoveApp := true; // в результат возвращаемой функции ставим значение: истина

AssignFile(batfile,'Del.bat'); // присваиваем файл переменной

ReWrite(batfile); // Открываем для перезаписи (если существует файл перезапишится, иначе создастся)

ChDir(ExtractFilePath(ParamStr(0))); // меняем текущую директорию (с которой работает программа) на директорию в которой находится исполняемый файл

WriteLn(batfile,'del '+ExtractFileName(ParamStr(0))); // записываем в файл команду удаления del

WriteLn(batfile,'del Del.bat'); // пишем это для самоуничтожения пакетного файла

CloseFile(batfile); // закрываем файл

WinExec('Del.bat',SW_SHOW); // запускаем пакетный файл который был создан программой

ExitProcess(0); // завершаем программу

except

RemoveApp := false; // если происходит ошибка возвращаем ложь

end;

end;

Функция для переименования:

function RenameApp(newname : string) : boolean;

var

batfile : TextFile; // переменная файла

begin

try // блок try..except для обработки исключений (ошибок)

RenameApp := true; // в результат возвращаемой функции ставим значение: истина

AssignFile(batfile,'Rem.bat'); // присваиваем файл переменной

ReWrite(batfile); // Открываем для перезаписи (если существует файл перезапишется, иначе создастся)

ChDir(ExtractFilePath(ParamStr(0))); // меняем текущую директорию (с которой работает программа) на директорию в которой находится исполняемый файл

WriteLn(batfile,'ren '+ExtractFileName(ParamStr(0))+' '+newname); // записываем в файл команду переименовывание ren

WriteLn(batfile,'del Rem.bat'); // пишем это для самоуничтожения пакетного файла

CloseFile(batfile); // закрываем файл

WinExec('Rem.bat',SW_SHOW); // запускаем пакетный файл который был создан программой

ExitProcess(0); // завершаем программу

except

RenameApp := false; // если происходит ошибка возвращаем ложь

end;

end;

Заключение

Как видите ничего сложного тут нет. Эти функции не требуют ни каких дополнительных модулей.

Конец

Если будут какие то проблемы, непонятки то пишите в комментарии. С удовольствием отвечу. Желаю вам успеха в программировании!

 

Ссылки по теме

Файлы для загрузки


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 06.08.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Delphi Professional Named User
Enterprise Connectors (1 Year term)
Allround Automation PL/SQL Developer - 5 user license
ABBYY FineReader 14 Standard Full
EMS Data Comparer for Oracle (Business) + 1 Year Maintenance
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Все о PHP и даже больше
Adobe Photoshop: алхимия дизайна
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100