Повышение разрешений под Windows 7 - PullRequest
13 голосов
/ 26 мая 2011

У меня есть механизм «автоматического обновления», который много лет работал под Windows XP, который не работает под Windows 7, потому что запрос пользователю (которого никогда не было под Windows XP) разрешить программе запускаться с Права администратора не отображаются.

Программа win32 (написанная на Borland Delphi) использует LogonUser () и ImpersonateLoggedOnUser () для олицетворения пользователя (локальной учетной записи с правами администратора), чтобы она могла заменить выбранные файлы в папке Program Files.

Если я вручную войду в Windows 7, используя эту учетную запись пользователя, а затем попытаюсь удалить файл в папке Program Files, Windows 7 запрашивает у меня разрешение на продолжение работы программы - если я даю разрешение, файл удаляется, если Я отказываю в разрешении «Отказано в доступе», и удаление не разрешено.

При попытке выполнить то же, что описано выше, «доступ запрещен» - это результат без запроса пользователя.

В аналогичном вопросе я вижу (относительно создания временных файлов (где основной смысл данных ответов совершенно справедливо «не делайте этого»), что такое приглашение может быть выдано «в коде», но я не вижу, где этот метод на самом деле объясняется.

Ответы [ 3 ]

5 голосов
/ 26 мая 2011

Вам просто нужно пометить ваш автообновитель как требующий повышенных прав в манифесте приложения .

При этом вы, возможно, захотите рассмотреть возможность установки в месте, где у пользователя есть права на запись.

3 голосов
/ 26 мая 2011

Похоже, вы частично спрашиваете, как запустить код с повышенными правами. Ниже приведено несколько ответов на вопрос, в которых содержатся ссылки на информацию, необходимую для вызова функциональности с повышенными правами:

Delphi: при необходимости запрашивать повышение UAC

0 голосов
/ 11 марта 2013

Прошло два года, мои клиенты, наконец, перешли на Windows 7, и я наконец-то нашел способ обойти проблему, которую пытался решить (временно предоставив достаточные права для замены исполняемых файлов в программных файлах под Windows 7), заменив мойсобственный установщик с установщиком Inno Setup (включающий дополнительную логику, перенесенную из моего установщика с использованием сценариев Pascal).Inno Set обрабатывает все проблемы с разрешениями - ура.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...