Планировщик заданий: доступ запрещен при настройке RunLevel - PullRequest
0 голосов
/ 24 июня 2019

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

HRESULT hr = taskDefinition->get_Principal(&taskSecuritySettings);
if (SUCCEEDED(hr))
    hr = taskSecuritySettings->put_RunLevel(TASK_RUNLEVEL_HIGHEST);

Регистрация задачи работает как ожидалось.Если я раскомментирую его, произойдет сбой с ошибкой «Доступ запрещен».Вот код для регистрации задачи:

   const HRESULT hr = taskFolder->RegisterTaskDefinition(
      _bstr_t(defaultTaskName), taskDefinition,
      TASK_CREATE_OR_UPDATE, username, password,
      logonType,
      _variant_t(L""),
      registeredTask
   );

, где тип входа обычно TASK_LOGON_INTERACTIVE_TOKEN_OR_PASSWORD.Изменение его на TASK_LOGON_PASSWORD или TASK_LOGON_INTERACTIVE_TOKEN ничего не изменило.

Предоставляемый мною пользователь / пароль является локальным администратором.Использование учетной записи администратора дает те же результаты.Отсутствие имени пользователя / пароля и TASK_LOGON_NONE дают одинаковые результаты.

Есть идеи?

1 Ответ

0 голосов
/ 04 июля 2019

Проблема была не в использовании API, а в правах на исполняемый файл.Чтобы успешно запустить его с TASK_RUNLEVEL_HIGHEST, его необходимо выполнить от имени администратора.

Это поведение можно найти в документации Microsoft: https://docs.microsoft.com/en-us/windows/desktop/taskschd/security-contexts-for-running-tasks

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