Запускать приложение с повышенными правами при запуске ОС без запроса UA C - PullRequest
1 голос
/ 22 апреля 2020

Я разрабатываю программу для Windows, которая состоит из двух компонентов:

  1. Драйвер ядра (подписан сертификатом EV)
  2. Уровень пользователя GUI компонент .exe-файл (записан в Delphi).

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

Как такая программа может автоматически запускаться при запуске Windows без отображения приглашения UA C?

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

Я рассматриваю следующие варианты и буду признателен, если вы укажете правильное направление:

1. Задайте для запуска драйвера значение * * * * * * * * * * * * * * * [*] [*] [*] [*]]. Служба ядра

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

2. Создайте отдельную службу уровня пользователя, которая запустит .exe

Я прочитал, что службы уровня пользователя освобождены от UA C.

Возможным подходом будет создание автоматическая c запускаемая служба уровня пользователя, которая просто запускает процесс .exe (используя CreateProcessAsUser () ), а затем завершает свою работу.

3. Преобразуйте программу .exe из приложения Delphi GUI в службу уровня пользователя

Аналогично варианту 2, но вместо создания отдельного .exe для службы мы преобразуем текущее GUI приложение для работы также в качестве службы. Я нашел некоторую документацию по этому поводу в этой ветке StackOverflow . Однако этот подход кажется более сложным, чем создание отдельной выделенной службы.

4. Предоставляет ли сертификат EV какое-либо преимущество для выполнения этой задачи?

5. Есть ли лучший способ, кроме вышеупомянутых?

1 Ответ

1 голос
/ 23 апреля 2020

Как отметил Серта c Акьюз в своем комментарии, вы должны использовать для этого windows Task Schedluer.

С помощью Task Scheduler вы можете создать задачу, которая будет запускаться при входе в систему и запускаться пользователем. Ваш EXE с самыми высокими привилегиями.

И когда я говорю «наивысшая доступная привилегия», я имею в виду наивысшую привилегию текущего пользователя, когда вы указываете группу пользователей в поле When running the task, use the following user account при условии, что текущий пользователь является членом этой группы. Поэтому, если текущий пользователь не имеет достаточных прав для выполнения программ с повышенными привилегиями, задача выполнит ваше приложение со стандартными привилегиями.

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

Любой способ использования планировщика задач для запуска приложения GUI, поставляемого с некоторыми драйверами, довольно популярен. Например, ASUS использует такой подход для запуска своей программы AI Suite, которая позволяет отслеживать и настраивать различные параметры своих материнских плат. Вот как эта задача настроена на моем компьютере.

ASUS AI Suite II task properties - General ASUS AI Suite II task properties - Triggers ASUS AI Suite II task properties - Actions ASUS AI Suite II task properties - Settings

PS: Я специально решил показать вам свойства задачи для ASUS AI Suite, так как она фактически сделана с Delphi

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