Повышенные привилегии с определенным пользователем/паролем в Delphi

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

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

Кто-нибудь знает, как с этим бороться?


person user3605371    schedule 05.05.2014    source источник
comment
Запуск приложения с правами администратора из учетной записи без прав администратора всегда будет запрашивать учетные данные администратора. Большинство приложений, требующих прав администратора, не будут принимать учетные данные из командной строки; они просто предполагают, что приложение запускается администратором, и позволяют Windows справиться с этим.   -  person Ken White    schedule 05.05.2014
comment
Создайте службу, которая будет обрабатывать шаги администратора, и клиент, который будет запускать службу для этого. Вот как Центр обновления Windows и Firefox Updater (и многие другие) делают свою работу   -  person Sir Rufo    schedule 06.05.2014


Ответы (1)


Вы также можете:

  1. используйте LogonUser(), чтобы войти в нужную учетную запись пользователя, затем ImpersonateLoggedOnUser(), чтобы вызывающий поток олицетворял этого пользователя перед выполнением желаемых задач, а затем RevertToSelf(), когда закончите, чтобы прекратить олицетворение.

  2. переместите административные задачи в отдельный процесс, а затем используйте LogonUser() и CreateProcessAsUser() или, альтернативно, CreateProcessWithLogonW(), чтобы запустить этот процесс, используя учетные данные пользователя, когда это необходимо.

person Remy Lebeau    schedule 05.05.2014
comment
Я не уверен, как это работает со вторым вариантом, но Impersonate работал очень хорошо. Спасибо - person user3605371; 06.05.2014