Я разработал автообновление для своего приложения, которое получает список хэшей MD5 для всех файлов с сервера обновлений и загружает новые файлы в случае несоответствия.
На данный момент это происходит только для основного DLL-файла, который загружается во время выполнения после (!) Программы обновления, завершившей свою работу.
Он отлично работает в Windows XP, но некоторые пользователи уже жаловались, что программа обновления выдает им ошибку 5 «Доступ запрещен» при попытке перезаписать указанный файл DLL. Если они запускают его с правами администратора, это работает, но раздражает, что они всегда соглашаются с привилегиями администратора при запуске программы.
Мой вопрос: почему доступ к перезаписи DLL запрещен, есть ли способ сделать это без приглашения UAC?
В качестве альтернативы: есть ли способ заставить приложение работать от имени администратора на постоянной основе таким образом, чтобы пользователь просто соглашался с ним один раз, а не каждый раз, когда оно запускается.
PS:
Я использую Qt 4.7, особенно метод QFile :: open с QFile :: WriteOnly | QFile :: Truncate и вызов QMessageBox, если открытие завершается неудачно с errorString () и некоторыми пояснениями.
Спасибо!