Учетные записи службы и BITS
С помощью BITS можно передавать файлы из службы. Служба должна использовать учетную запись системы LocalSystem, LocalService или NetworkService. Эти учетные записи всегда вошли в систему; поэтому задания, отправленные службой с помощью этих учетных записей, всегда выполняются.
Если служба, запущенная под системной учетной записью, олицетворяет пользователя перед вызовом BITS, BITS отвечает так же, как и для любой учетной записи пользователя (например, пользователю необходимо войти на компьютер для передачи). Служба также должна использовать динамическую маскировку с указателями интерфейса BITS при олицетворении пользователя. Cloaking не наследуется, поэтому необходимо вызвать функцию CoSetProxyBlanket для каждого указателя интерфейса, полученного от BITS (например, указатель задания, возвращенный из вызова метода IBackgroundCopyManager::CreateJob); Недостаточно установить маскировку на указателе интерфейса диспетчера. Вы также можете вызвать функцию CoInitializeSecurity для процесса вместо вызова функции CoSetProxyBlanket на каждом указателе интерфейса.
Однако если служба не олицетворяет пользователя, применяются следующие действия:
- Задания, созданные учетной записью службы, принадлежат этой учетной записи. Так как системные учетные записи всегда вошли в систему, BITS передает файлы до тех пор, пока компьютер запущен и есть сетевое подключение.
- Системные учетные записи не должны использовать сопоставленные буквы сетевого диска, так как буквы дисков относятся к сеансу, а сопоставление может быть потеряно после перезагрузки компьютера.
- При отсутствии вспомогательного маркерапроверка подлинности сети использует учетные данные компьютера для учетных записей LocalSystem и NetworkService и анонимных учетных данных для учетной записи LocalService. BITS возвращает значение "отказано в доступе", если список управления доступом (ACL) для исходного файла ограничивает доступ к учетной записи пользователя.
- Дополнительные сведения о том, как работает проверка подлинности в присутствии вспомогательного маркера, см. в разделе аутентификации.
- Параметры прокси-сервера Microsoft Internet Explorer хранятся на пользователя и не задаются для системных учетных записей. Попробуйте настроить вспомогательный маркер для заданий BITS или явно задать правильные параметры прокси-сервера, вызвав IBackgroundCopyJob::SetProxySettings с BG_JOB_PROXY_USAGE_OVERRIDE. Кроме того, можно использовать переключатели /Util /SetIEProxy BitsAdmin.exe для задания параметров прокси-сервера Internet Explorer для учетной записи системы LocalSystem, LocalService или NetworkService. Дополнительные сведения см. в разделе Средство BitsAdmin.
Обратите внимание, что BITS не распознает параметры прокси-сервера, заданные с помощью файла Proxycfg.exe.