Форум программистов, компьютерный форум CyberForum.ru

Как удалить файл программы с винчестера самой программой? - C++

Войти
Регистрация
Восстановить пароль
 
daxter
Сообщений: n/a
19.06.2008, 02:33     Как удалить файл программы с винчестера самой программой? #1
Мне нужно сделать это под Виндоус.
Удалить файл программы когда она же и запущена.
Система блокирует доступ к файлу на удаление.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2008, 02:33     Как удалить файл программы с винчестера самой программой?
Посмотрите здесь:

Как закрыть и удалить файл? C++
C++ прокомментируйте каждую строчку программы, у самой не получается (максимальный массив)
C++ Как удалить определенный файл?
Как удалить файл программой C++
Сворачивание программы самой себя в трей C++
C++ Работа с БД. Файл с самой БД
Возможно ли как-то сокрыть реализации стратегий в самой библиотеке, то есть вынести в cpp-файл? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dmitry_Gr
0 / 0 / 0
Регистрация: 07.06.2008
Сообщений: 14
19.06.2008, 02:46     Как удалить файл программы с винчестера самой программой? #2
Такой вопрос где-то я уже видел на форумах.
Там по-моему предлагали создать *.bat файл для удаления и при выходе из программы запустить его.
daxter
Сообщений: n/a
19.06.2008, 03:16     Как удалить файл программы с винчестера самой программой? #3
А кто удалит батничек потом?
sn
Сообщений: n/a
19.06.2008, 06:40     Как удалить файл программы с винчестера самой программой? #4
Do
Создать другой батничек...
Until

А если серьезно, то я видел в книге 'Неофицальная Windows 95' 1996 года редакции. Там что-то говорилось про отложенное изменение файла.
Задаешь винде отложенное удаление. Как только файл становится доступным - херишь его.
simplepilot
1 / 1 / 0
Регистрация: 22.07.2007
Сообщений: 366
19.06.2008, 12:56     Как удалить файл программы с винчестера самой программой? #5
Я уж не знаю точно как это делается на С++ но уверен что делается. А что нельзя запустить другой Thread, сделать ему цикл где то минуты на полторы а потом он удалит основную программу.
daxter
Сообщений: n/a
21.06.2008, 02:59     Как удалить файл программы с винчестера самой программой? #6
Но ведь поток не может существовать без родительского процесса.
Так что это тоже не выход.
daxter
Сообщений: n/a
27.06.2008, 01:42     Как удалить файл программы с винчестера самой программой? #7
Спасибо ВСЕМ!
Вариант с батничками действительно прошел!
violator
Сообщений: n/a
01.07.2008, 11:23     Как удалить файл программы с винчестера самой программой? #8
Поищи в сети исходник WinCih
Они хорошо закоментированы. Идея значит такая... Переходишь на нулквое кольцо защиты (генерированием ексепшена) и потом что хочешь можешь удалять (Ты как ядро)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2008, 01:33     Как удалить файл программы с винчестера самой программой?
Еще ссылки по теме:

C++ Как удалить файл?
Как удалить файл? C++
Как полностью перезапустить программу из самой же программы? Не сбросить все параметры C++
Файл: Как сделать так, чтобы при запуске программы проверялось, существует ли файл? C++
Нужно нарисовать 2 блок-схемы(1 математическую,2 для написания самой программы) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
daxter
Сообщений: n/a
02.07.2008, 01:33     Как удалить файл программы с винчестера самой программой? #9
Ну с нулевым кольцом это уже перебор, я обошелся более простым вариантом с bat - файлом:
<code>
int main()
{
char progfile [MAX_PATH];
char batfile [MAX_PATH];
char *batcmd=new char[60+3*MAX_PATH];
DWORD num;
HANDLE hBat;

GetWindowsDirectory(batfile,MAX_PATH);
strcat(batfile,'\temp\del.bat');
GetModuleFileName(NULL,progfile,MAX_PATH);
wsprintf(batcmd,'@echo off

:l1

del '%s '

if exist '%s ' goto l1

del '%s '
',progfile,progfile,batfile);

hBat=CreateFile((LPCSTR)batfile,GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
WriteFile(hBat,batcmd,strlen(batcmd),&num, NULL);
CloseHandle(hBat);

STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW;

CreateProcess(NULL,batfile,NULL,NULL,FALSE, IDLE_PRIORITY_CLASS|DETACHED_PROCESS,
NULL,NULL,&si,&pi);
delete [] batcmd;
return 0;
}
</code>
Yandex
Объявления
02.07.2008, 01:33     Как удалить файл программы с винчестера самой программой?
Ответ Создать тему
Опции темы

Текущее время: 15:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru