Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Самоудаление, Как написать самоудаляющийся exe-шник? 
:(
    Опции темы
Unregistered
Дата 24.9.2003, 13:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











"зашедулить" - это дать планировщику задание smile.gif
  Вверх
Peter
Дата 24.9.2003, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: -1
Всего: 1



Та самоудаляющаяся программа (с батником) имеет недостатки: не воспринимает русские буквы, поскольку батник не понимает виндоусовскую кодировку. Ну, не вставлять же самому перекодировщик!


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
Gordon
Дата 17.8.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 2
Всего: 6



Цитата

По-моему, можно где-то в реестре записать строковое значение с именем файла и файл удалится при перезапуске Винды


Ребята, а все-таки можно так сделать smile 


--------------------

  
     
PM MAIL WWW   Вверх
_hunter
Дата 17.8.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



Цитата(Gordon @  17.8.2006,  15:01 Найти цитируемый пост)
Ребята, а все-таки можно так сделать smile 

можно


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Gordon
Дата 17.8.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 2
Всего: 6



Цитата

можно


А если не секрет, то как smile 


--------------------

  
     
PM MAIL WWW   Вверх
_hunter
Дата 17.8.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



в секцию RunOnce напиши del "путь к удаляемому файлу"


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
GremlinProg
Дата 17.8.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 3
Всего: 106



Тема сильно избита.
Цитата(_hunter @  17.8.2006,  18:05 Найти цитируемый пост)
в секцию RunOnce напиши del "путь к удаляемому файлу"

Цитата

The system uses these registry entries to complete the operations at restart in the same order that they were issued. For example, the following code fragment creates registry entries that delete szDstFile and rename szSrcFile to be szDstFile at restart: 

MoveFileEx(szDstFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);

Так намного проще, оказывается


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Gordon
Дата 17.8.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 2
Всего: 6



Пишу:

Код

AnsiString PathName="C:\\Program Files\\Borland\\CBuilder6\\Projects\\Projects1.exe";
TRegistry *Reg=new TRegistry;    
Reg->RootKey=HKEY_LOCAL_MACHINE;
Reg->OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce",false);
Reg->WriteString("del", PathName);    
Reg->CloseKey();    
delete Reg;


Удаляется только ключ в реестре, может я что-то не так делаю smile 


GremlinProg, 
 
Цитата

MoveFileEx(szDstFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);

а как этим пользоваться smile 


--------------------

  
     
PM MAIL WWW   Вверх
SergeCpp
Дата 17.8.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 15
Всего: 124



MoveFileEx

If the dwFlags parameter specifies MOVEFILE_DELAY_UNTIL_REBOOT, MoveFileEx fails if it cannot access the registry. The function stores the locations of the files to be renamed at restart in the following registry value:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations


This registry value is of type REG_MULTI_SZ. Each rename operation stores one of the following NULL-terminated strings, depending on whether the rename is a delete or not: 


szDstFile\0\0

or 

szSrcFile\0szDstFile\0
The string "szDstFile\0\0" indicates that the file "szDstFile" is to be deleted on reboot. 

The string "szSrcFile\0szDstFile\0" indicates that "szSrcFile" is to be renamed "szDstFile" on reboot.

Note  Although "\0\0" is technically not allowed in a REG_MULTI_SZ node, it can because the file is considered to be renamed to a null name.

The system uses these registry entries to complete the operations at restart in the same order that they were issued. For example, the following code fragment creates registry entries that delete szDstFile and rename szSrcFile to be szDstFile at restart: 

[C++]

MoveFileEx(szDstFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);

Because the actual move and deletion operations specified with the MOVEFILE_DELAY_UNTIL_REBOOT flag take place after the calling application has ceased running, the return value cannot reflect success or failure in moving or deleting the file. Rather, it reflects success or failure in placing the appropriate entries into the registry.

The system deletes a directory that is tagged for deletion with the MOVEFILE_DELAY_UNTIL_REBOOT flag only if it is empty. To ensure deletion of directories, move or delete all files from the directory before attempting to delete it. Files may be in the directory at boot time, but they must be deleted or moved before the system can delete the directory.

The move and deletion operations are carried out at boot time in the same order that they are specified in the calling application. To delete a directory that has files in it at boot time, first delete the files.

PM MAIL WWW ICQ   Вверх
Gordon
Дата 17.8.2006, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 2
Всего: 6



Попробую разобраться...

P.S. Жалко я с английским не на "Ты" smile 


--------------------

  
     
PM MAIL WWW   Вверх
MAKCim
Дата 17.8.2006, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Получается, все кто под Unix'ами батники пишут - это не спецы? 

под unix-ом удалить исполняемый файл просто
Код

#include <unistd.h>

int main(int argc, char* argv[])
{
    unlink(argv[0]);
    return 0;
}



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Gordon
Дата 17.8.2006, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 2
Всего: 6



Хотелось бы и под виндой удалить...


--------------------

  
     
PM MAIL WWW   Вверх
BreakPoint
Дата 25.3.2010, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.3.2010

Репутация: нет
Всего: нет



Если кому еще надо, есть статья в которой рассмотрены методы самоудаления исполняемых файлов под Vista и Windows 7:
Самоудаление исполняемых файлов

Примеры правда на Delphi, но описано все подробно, можно на чем угодно переписать.

Это сообщение отредактировал(а) BreakPoint - 31.3.2010, 13:42
PM MAIL   Вверх
GoldFinch
Дата 25.3.2010, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



BreakPoint,
в 6-м методе используется GetProcAddress чтобы получить адреса в другом процессе, это не работает под Vista и Windows 7.

PM MAIL ICQ   Вверх
BreakPoint
Дата 26.3.2010, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.3.2010

Репутация: нет
Всего: нет



Цитата(GoldFinch @ 25.3.2010,  23:36)
BreakPoint,
в 6-м методе используется GetProcAddress чтобы получить адреса в другом процессе, это не работает под Vista и Windows 7.

Код тестировался на Vista и Win7x64 все работает нормально.
GetProcAddress получает адресс в своем просессе, а не в другом. Поскольку стандартные библиотеки загружаются по одним и темже базовым адресам (как правило), то все работает нормально.
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0936 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.