Как к программно сам удаляют? (C# WinMobile)

Как делают я программно сам удаляю?

C#/.NET Компактная Платформа 2 / Windows Mobile 6

Я не хочу обсуждать, ПОЧЕМУ сделать это, я просто должен знать, КАК сделать это!

Важный:

  • "Второе приложение" подход НЕ является опцией. (Если то второе приложение не может быть "извлечено" из запущенного приложения, но я не знаю, как сделать это!).

  • Никакая проблема в принудительной перезагрузке, если окна добиваются цели при запуске. (Действительно ли это возможно?Мило! Покажите мне как!).

  • Примеры кода приветствуются.

6
задан Cœur 22 January 2019 в 08:57
поделиться

3 ответа

Раньше я делал это, просто записывая командный файл в файловую систему, который ждал несколько секунд, а затем удалял программу. Затем вы используете Process.Start () , чтобы запустить командный файл и немедленно вызвать Environment.Exit () . Вы должны убедиться, что командный файл достаточно долго ждет закрытия вашей программы, иначе он не сработает.

1
ответ дан 16 December 2019 в 21:37
поделиться

Единственный способ, который я могу придумать навскидку, чтобы удалить себя и не оставить следов, - это использовать что-то, что уже присутствует в устройстве, а именно wceload (экстрактор CAB) . Я бы создал простой CAB-файл с пользовательской DLL-установщиком, которая выполняет ожидание, а затем удаляет.

Затем я бы добавил CAB в приложение как встроенный ресурс. Когда вам нужно удалить, вы

  1. распакуйте CAB в файловую систему
  2. запустите wceload.exe с CAB в качестве параметра и / noui (или / silent)
  3. Закройте приложение

Затем CAB удалится. ваш файл (именованный мьютекс может синхронизировать это лучше, чем просто вызов сна в DLL). wceload автоматически удаляет CAB (в зависимости от версии WinMo, но есть переключатель для принудительного удаления при необходимости).

Это определенно взлом, но он обеспечит удаление "не оставляет следов". Конечно, CAB, вероятно, также придется очистить собственные записи реестра установки. Может быть, вы могли бы просто сделать так, чтобы установка возвращала «отказ», чтобы они вообще не записывались.

6
ответ дан 16 December 2019 в 21:37
поделиться

Windows может удалять файлы при запуске. Это можно сделать, вызвав MoveFileEx , например:

MoveFileEx(szDstFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);

Я не уверен, доступен ли этот API в Mobile 6 или нет. Однако на самом деле он создает запись реестра в HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager \ PendingFileRenameOperations. Ключ - это REG_MULI_SZ, и вам просто нужно присвоить ему значение вроде «szDstFile \ 0 \ 0». При перезагрузке Windows удаляет файл.

Что касается программной перезагрузки, посмотрите этот поток на SO.

-1
ответ дан 16 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: