Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2012, 18:19   #1
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию Самоуничтожение исполняемого файла программы при ее запуске

Так, вот проблема такая: нужно в OnCreate формы сделать удаление исполняемого файла программы, но программа должна продолжать работать.
Тоесть программа выполняет такое:
  1. Запуск
  2. Самоуничтожение исполняемого файла
  3. Мучение пользователя вопросами
  4. Показ конфиденциальных данных
  5. Закрытие

Цель самоуничтожения - невозможность повторного запуска программы.
Проблема состоит в самоуничтожении - при вызове
Код:
DeleteFile(Applcation.ExeName)
удаление файла не происходит. В интернете все как-то запутано. Я просто хочу удалить программу, но чтобы она продолжала работать.
Удаление программы при закрытии меня не устраивает.
hon вне форума Ответить с цитированием
Старый 12.08.2012, 18:22   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

нельзя уничтожить запущенный файл, так как он имеет связи с процессом.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.08.2012, 18:36   #3
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Проверку на запуск копии можно сделать более лучшим способом.
А можно и таким. Уже задавали такой вопрос.
Kix.IV вне форума Ответить с цитированием
Старый 12.08.2012, 18:44   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,725
По умолчанию

Цитата:
Проверку на запуск копии можно сделать более лучшим способом.
Вы о чем? Речь в топике о другом.

Цитата:
Уже задавали такой вопрос.
Там создается батник и прога удаляется после закрытия. Прочитайте первый пост этой темы.

К чему вообще был ваш пост?

По теме:
Теоретически можно удалить запущенный файл, но это непереносимо даже между двумя версиями винды, сложно и требует знаний + проблемы с антивирусами и прочим софтом.
Так что правильный ответ дал Пепел Феникса. Измените логику вашей программы.
p51x вне форума Ответить с цитированием
Старый 12.08.2012, 18:52   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Наводящий вопрос: если файл удалить, то что будет работать?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 12.08.2012, 19:05   #6
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Цитата:
Вы о чем? Речь в топике о другом.
Да ладно?
Цитата:
Цель самоуничтожения - невозможность повторного запуска программы.
Цитата:
Там создается батник и прога удаляется после закрытия. Прочитайте первый пост этой темы.
Чуть ниже вроде бы был код удаления программы во время её работы.
Kix.IV вне форума Ответить с цитированием
Старый 12.08.2012, 19:11   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Чуть ниже вроде бы был код удаления программы во время её работы.
нельзя этого сделать.
и нет там такого кода.

ТС, мое мнение достаточно поставить защиту от повторного запуска + удаление после.
а вообще если не зараза, то можно и сохранить инфу что запускались
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.08.2012, 19:16   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
нельзя уничтожить запущенный файл, так как он имеет связи с процессом.
Ага. Но запуск из памяти, никто не отменил и это возможно. Проецируй образ в память, а физический мжно вообще удалить.

Последний раз редактировалось Человек_Борща; 12.08.2012 в 19:19.
Человек_Борща вне форума Ответить с цитированием
Старый 12.08.2012, 19:25   #9
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ТС, мое мнение достаточно поставить защиту от повторного запуска + удаление после.
А если пользователь увидев, что программа по каким-то причинам отказала ему показывать конфиденциальные данные, скопирует ее и запустит еще раз. Или от злости разошлет ее по тысяче других компьютеров?


Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Ага. Но запуск из памяти, никто не отменил и это возможно. Проецируй образ в память, а физический мжно вообще удалить.
Идея нравится, но как осуществить?
hon вне форума Ответить с цитированием
Старый 12.08.2012, 19:41   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Проецируй образ в память, а физический мжно вообще удалить.
несовместимые слова, именно проекции в основном и не дают удалить исполняемый файл.
тут надо грузить именно в память, никаких проекций.
только вот, в винде помоему нет готовх методов загрузки exe в память без проекций, а значит руками, сочувствую...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть три программы. Их нужно объеденить в одну, тоесть чтоб при запуске программы были пункты меню для каждой из программ afirat Помощь студентам 9 28.04.2012 12:39
Проблема при запуске программы Neo_AVE C++ Builder 0 04.05.2011 15:38
mp3 при запуске программы - ? Evgenii Общие вопросы Delphi 8 12.08.2009 08:11
Эффекты при запуске программы Vladya Общие вопросы Delphi 10 17.03.2009 17:29
Ошибка при запуске программы MAcK Общие вопросы .NET 5 14.08.2008 15:12