Самоудаление/Удаление себя/Самоудаляющийся exe
Запись от Van111 размещена 31.12.2014 в 00:39
давно хотел разобраться с данным вопросом, но то ли ума не хватало, то ли находчивости. Сейчас выдалась свободная минутка и я решил попробовать реализовать старую идею. Изначально код был написан на с++(правда я использовал char вместо std::string что уже отдаляло мой код от ООП) , но потом решил обойтись без всяких обёрток и абстракций и написать на чистом СИ.
|
Всего комментариев 7
Комментарии
-
Запись от Avazart размещена 12.01.2015 в 14:32 -
Запись от Avazart размещена 12.01.2015 в 14:33
Обновил(-а) Avazart 12.01.2015 в 14:37 -
Цитата:Код C++
1
CharToOemA((LPSTR)command, buffer);// теперь поддерживаем и русские символы
И зачем?
Цитата:Итого многобукв как для простого решения с батником.
но мне это в принципе по боку, вы свою репутацию давно потеряли, достаточно вспомнить ваши склоки с
-=ЮрА=-, где он несомненно был прав а вы в свою очередь только воду лили.Запись от Van111 размещена 14.01.2015 в 20:49 -
Запись от Avazart размещена 15.01.2015 в 18:26
Обновил(-а) Avazart 16.01.2015 в 23:10 -
Цитата:невосприимчивостью к чужой критике
Запись от Van111 размещена 16.01.2015 в 13:04 -
Цитата:в пути к файлу могут быть русские символы
Запись от Enno размещена 16.01.2015 в 17:49
Обновил(-а) Enno 16.01.2015 в 17:51 -
Цитата:И зачем?
Цитата:В STARTUPINFO sinf = { 0 }; нужно размер инициализировать.
Цитата:Элементы структуры STARTUPINFO используются Windows-функциям и при созда-
нии нового процесса. Надо сказать, что большинство приложений порождает процес-
сы с атрибутами по умолчанию, Но и в этом случае Вы должны инициализировать все
элементы структуры STARTUPINFO хотя бы нулевыми значениями, а в элемент сb —
заносить размер этой структуры:
К сожалению, разработчики приложений часто забывают о необходимости инициализации этой структуры.C++ 1 2
STARTUPINFO si = { sizeof(si) }; CreateProcess(..., &si, ...);
//...Цитата:А вообще ShellExecute() должно быть достаточно.Цитата:Итого многобукв как для простого решения с батником.На С++ + ShellExecute()C++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include <iostream> #include <fstream> #include <sstream> #include <windows.h> int main(int narg, char *args[]) { using namespace std; stringstream batName; batName<<args[0]<<"~.bat"; ofstream ofs(batName.str().c_str()); ofs<<"chcp 1251" <<endl <<"del \""<<args[0]<<"\""<<endl <<"del \""<<batName.rdbuf()<<"\""<<endl; ofs.close(); return (int)ShellExecuteA(0,0,batName.str().c_str(),0,0,SW_HIDE)>32; }
Цитата:Сообщение от Van111может критике не хватает адекватностиЗапись от Avazart размещена 16.01.2015 в 20:39