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