Назад | Перейти на главную страницу

Как установить соответствующие разрешения для запланированной задачи для запроса контроллера службы?

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

Проблемной программой является настраиваемое приложение C sharp, customApp.exe, работающее как запланированная задача на сервере 2003. Проблема в том, что у меня есть приложение C sharp, которое проверяет свои зависимости на раннем этапе выполнения. Одна из этих зависимостей работает как служба. Я выполняю запрос, чтобы убедиться, что служба работает. Ошибка при проверке состояния работы службы. Сбой регистрируется в журналах событий сервера в разделе безопасности как аудит сбоев с примечаниями относительно разрешений как причины сбоя.

Для запуска программы customApp.exe существует специальная учетная запись службы. Права довольно ограничены, но достаточны для приложения, как видно во время тестовых прогонов. Проблемы возникают, когда приложение запускается как запланированная задача.

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

Вот фрагмент кода C #, который вызывает суету:

ServiceController sc = new ServiceController("Service Name Here");
            if (sc.Status != ServiceControllerStatus.Running)
            {

Вот альтернатива командной строки, которая по сути такая же, как и код:

sc query "Service Name Here"

Запуск customApp.exe при входе на сервер под выделенной учетной записью службы приводит к успеху. Выполнение приведенной выше командной строки «sc query« Service Name Here »также приводит к успеху при входе в систему. Запуск customApp.exe в качестве запланированной задачи, запускаемой в указанное время без вмешательства, пока я удаленно вошел на сервер под выделенным учетная запись службы приводит к успеху.

Запуск customApp.exe как запланированной задачи при любых других условиях приведет к сбою. Это, наверное, то, что меня больше всего смущает. Как было сказано ранее, это выполняется как запланированная задача, когда я удаленно вошел в систему с выделенной учетной записью пользователя, но в противном случае не удается.

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

Вам нужно будет настроить Планировщик задач для работы от имени конкретного пользователя. В планировщике задач щелкните раскрывающееся меню «Действие», затем выберите «Конфигурация учетной записи службы AT». Измените это с системной учетной записи на «Другая учетная запись пользователя», затем измените ее на учетную запись, под которой вы хотите запускать команды.

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