Разрешения для приложений, запускаемых службами, работающими как локальная система
У нас работает устаревшая служба, которая отвечает за мониторинг другой службы, но также запускает консольное приложение (написанное на C), которое продолжает работать в фоновом режиме. Если мы запустим консольное приложение из командной строки, оно будет работать нормально. Если мы также запустим службу под учетной записью сетевой службы, она также нормально запустит консольное приложение, но в этом случае она не сможет запустить другую службу.
Таким образом, поскольку служба должна отслеживать (запускать / останавливать) другую службу, ее необходимо запустить под учетной записью локальной системы, чтобы получить необходимые привилегии, но проблема в том, что консольное приложение, запущенное этой службой, не может прочитать свою конфигурацию из папки appdata.,
Я вижу, что консольное приложение получает папку APPDATA как C:\Windows\System32\config\systemprofile\AppData\Roaming
, но приложение заявляет, что файл конфигурации внутри этой папки не может быть найден, поэтому он сам закрывается. Когда я запускаю его из учетной записи обычного пользователя, он переходит в папку appdata этого пользователя и работает правильно. Я даже пытался дать Users
сгруппировать дополнительные разрешения для своей папки внутри systemprofile\AppData\Roaming
папка (что не имеет смысла, так как приложение работает как локальная система), но это не помогло.
Каков наилучший способ заставить это консольное приложение считывать настройки из папки appdata локальной системы?
Или, в качестве альтернативы, возможно ли предоставить этим отдельным службам разрешения на запуск других служб, не запуская их в качестве локальной системы?
1 ответ
Если мы запустим консольное приложение из командной строки, оно будет работать нормально.
Это означает, что учетная запись, в которую вы вошли, обладает достаточными правами, чтобы делать все, что вам нужно. Укажите эту учетную запись на вкладке "Вход в систему", и все будет хорошо!