Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Обход контроля учетных записей пользователей (UAC) в программах на Delphi для Windows 7 и Vista

Delphi , ОС и Железо , Windows

Вопрос пользователя связан с необходимостью выполнения некоторых установок в программе на Delphi с правами администратора в операционных системах Windows 7, Vista и Server 2008, где активирован контроль учетных записей пользователей (UAC), после чего программа должна продолжить работу с правами обычного пользователя. Пользователь хочет перезапустить программу без административных прав, не распространяя дополнительные программы.

Подходы к решению проблемы:

  1. Установка с правами администратора и последующая работа без них: Программа должна выполнить необходимые установки с правами администратора, а затем перезапуститься с правами обычного пользователя.

  2. Запрос на повышение прав при необходимости: Программа может запускаться без административных прав и запрашивать их только при необходимости выполнения действий, требующих повышенных привилегий.

Пример кода для запроса на повышение прав:

procedure Restart(RunAs: Boolean);
var
  i: Integer;
  Params: string;
begin
  // Закрытие программы и подготовка параметров для повторного запуска
  Params := '';
  for i := 1 to ParamCount do
    Params := Params + ' "' + ParamStr(i) + '"';

  Application.MainForm.Close;
  Application.ProcessMessages;
  if RunAs then
    ShellExecute(0, 'runas', PChar(ParamStr(0)), PChar(Params), '', SW_SHOW)
  else
    ShellExecute(0, 'open', PChar(ParamStr(0)), PChar(Params), '', SW_SHOW);
end;

Комментарии и вопросы пользователя:

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

Подтвержденный ответ:

Благодаря помощи Kate Gregory был разработан рабочий код на Delphi для запуска программы под обычным пользователем:

function RunAsUser(CommandLine, WorkDirectory: string; Wait: Boolean): Boolean;
begin
  // ... (код для запуска процесса с правами обычного пользователя)
end;

Этот код позволяет запустить программу с правами пользователя, которые не требовали административных привилегий при запуске текущего процесса, что решает поставленную задачу.

Рекомендации:

  • Для программ, которые обновляют себя, рекомендуется использовать отдельный установочный процесс, который запускается с правами администратора и обновляет основную программу.
  • Использование манифеста, который требует администраторских прав для отдельной программы обновления, может быть эффективным решением.

Вывод:

Для выполнения установок в программе на Delphi с административными правами и последующей работы без них, можно использовать функцию RunAsUser, которая позволяет запустить процесс с правами обычного пользователя. Это позволяет избежать распространения дополнительных программ и обеспечивает гибкость в управлении правами доступа в рамках одной программы.

Создано по материалам из источника по ссылке.

Вопрос связан с запуском программы на Delphi с правами администратора для выполнения установок в операционных системах Windows с активированным UAC, после чего программа должна продолжить работу с правами обычного пользователя.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 10:46:27/0.0059487819671631/0