Настройка пополнения баз Консультант+ от специализированной учетной записи
С целью обеспечения безопасности и возможности обслуживания комплекта Консультант+ сторонним субподрядчиком потребовалось настроить возможность автоматического обновления баз приложения от специально созданной доменной учетной записи без прав администратора — ConsUpdate. При этом данной УЗ выданы права на чтение и запись каталога, содержащего файлы приложения.
Запуск Консультант+ выполняется через исполнение сmd-файла, расположенного в домашнем каталоге пользователя.
@Echo Cons Automat Internet-Update
@del *.txt *.log *.mdp
start /w /min E:\Consultant\cons.exe /adm /receive_inet /yes /base* /i_sendlog /i_ondemo /sendstt /autoproxy /inettimeout=10 /process=1
exit
где:
start /w /min — ключи cmd.exe для запуска приложения с минимизацией окна и ожиданием завершения
/adm — запуск в режиме администратора (при этом имя пользователя должно быть внесено в файл Userlist.cfg)
/receive_inet — Запуск интернет-пополнения
/yes — пакетный режим запуска Консультант +
/base* - пополнение всех баз, включенных в BASELIST.CFG
/i_sendlog - Отправлять на сервер расширенную диагностическую информацию
/i_ondemo — обновлять демоверсии
/sendstt - Отправка файлов статистики по завершении операции
/autoproxy - автоопределение прокси-сервера
/inettimeout=10 — таймаут соединения с сервером обновлений
/process=1 - запуск в одном процессе(по умолчанию запускается по количеству логических ядер, при интернет-обновлении количество отличное от 1 может вызывать проблемы со стабильностью)
При попытке ручного старта задания в TaskSheduler получили Job failed to start.
Для выполнения .cmd-файла из планировщика заданий необходимо предоставить этой УЗ право Log on as a batch job ( Local Security Policy\Local Policies\User Rights Assignment\Log on as a batch job – добавить аккаунт).

Там же существует параметр Deny log on as a batch job, очевидно что используемая УЗ не должна входить в этот список.
После внесения ConsUpdate в Log on as a batch job запущенное вручную задание выполнилось корректно.
На следующий день выяснилось, что задание снова вывалилось с ошибкой Failed to start, несмотря на установку опции Run whether user logged or not.
В инфраструктуре заказчика было сконфигурировано хранение домашних каталогов пользователей на файловом сервере, комплект же Консультант+ был развернут на терминальном сервере. При логине пользователя на терминальном сервере домашний каталог был замаунчен, и задание выполнялось, при завершенной же сессии путь к cmd-файлу отсутствовал(и запуск задания от имени пользователя не воспринимался системой как логин ConsUpdate).
В связи с этим была создана отдельная папка C:\Users\ConsUpdate, на нее предоставлены права на чтение и запись для УЗ ConsUpdate, и туда помещен cmd-файл consupdate.cmd. Эта же папка была указана в поле Start in в параметрах задания.
В такой конфигурации задание выполнилось без ошибок и без залогиненного пользователя ConsUpdate.