Как я могу заставить мое приложение C # стереть себя (самоуничтожиться)? Вот два способа, которые, я думаю, могут сработать:
- Укажите другую программу, которая удаляет основную программу. Как тогда эта программа удаления удаляется?
- Создайте процесс в CMD, который ждет несколько секунд, а затем удаляет ваш файл. В течение этих нескольких секунд вы закрываете приложение.
Оба эти метода кажутся неэффективными. У меня такое ощущение, что в Windows есть какой-то встроенный флаг или что-то такое, что допускает такие вещи. Как я должен это делать? Кроме того, можете ли вы предоставить пример кода?
ОБНОВЛЕНИЕ: Спасибо за все ваши ответы! Я попробую их и посмотрю, куда это меня приведет.
Прежде всего, некоторые люди спрашивали, почему я хочу, чтобы мое приложение делало это. Вот ответ: несколько дней назад я прочитал спецификацию Project Aardvark, которую Джоэл Спольски опубликовал в своем блоге, и в ней упоминалось, что клиентское приложение само удалится после удаленного сеанса. Мне интересно, как это работает, и как, если мне когда-нибудь понадобится это сделать, я смогу совершить такой подвиг.
Вот небольшой обзор того, что было предложено:
- Создать запись реестра, которая сообщает Windows об удалении файла при перезагрузке
- Запустите CMD с помощью команды ping, чтобы подождать несколько секунд, а затем удалите файл
Оба из них, конечно, имеют свои недостатки, как указано в комментариях.
Однако сработает ли такой метод, который описан ниже?
Существует два исполняемых файла: Program.exe и Cleaner.exe. Первая - это сама программа, вторая - приложение, которое удаляет Program.exe и сам себя (если он загружен в память, как я собираюсь объяснить). Возможно ли для Program.exe (который имеет зависимости) загрузить всего Cleaner.exe, который не имеет каких-либо зависимостей, в память и запустить его?
Если это возможно, можно ли Cleaner.exe запаковать в Program.exe, загрузить в память и запустить?