Название: [РЕШЕНО] Удалить себя Отправлено: OKTA от Сентябрь 08, 2014, 12:37 Товарищи. Запускаю приложение и в конце работы оно должно удалить себя и всю папку, в которой сидит. Соответственно ничего другого, кроме отложенного запуска команды rmdir я не вижу. Но вот вопрос, как запустить эту шляпу с правами админа? Ибо без них она отказывается что-либо удалять собака! ??? ???
Название: Re: Удалить себя Отправлено: Пантер от Сентябрь 08, 2014, 13:11 Обычно удаление решается таким образом: создаем файл в тэмпе:
Код: start: И запускаем. Написано псевдокодом, я сейчас под Линухом. Название: Re: Удалить себя Отправлено: OKTA от Сентябрь 08, 2014, 13:56 Вопрос в методе удаления не стоит - главное, как запустить это с правами администратора? Потому что сейчас запускаю через QProcess::startDetached, но запускается скрипт с правами меньшими, чем даже у программы ???
Название: Re: Удалить себя Отправлено: OKTA от Сентябрь 08, 2014, 16:15 Так, ну вроде дело продвинулось, но теперь другой симптом))
rmdir удаляет все файлы в папке, кроме самой папки ;D Почему так может происходить? Опять из-за прав? Название: Re: Удалить себя Отправлено: OKTA от Сентябрь 08, 2014, 16:25 Все, вопрос снят. :)
Название: Re: Удалить себя Отправлено: vizir.vs от Сентябрь 09, 2014, 10:49 Название: Re: [РЕШЕНО] Удалить себя Отправлено: OKTA от Сентябрь 09, 2014, 11:03 В общем, самый простой способ, это использовать скрипт, т.к. запуск cmd с последующим вызовом rmdir через QProcess не прокатывает.
Скрипта мне хватило примерно такого: Код: cd .. cd .. нужен, чтобы выбраться из текущей директории, т.к. иначе она сама не удалится. timeout вместо sleep, т.к. sleep у меня не работал и в итоге оказалось, что он устаревший. Запускать скрипт надо через QDesktopServices::openUrl. Файл скрипта я создавал в temp и для поддержки русских путей ставил setCodec("CP-866") на QTextStream перед записью данных. |