Написанный мной сервис, который использует BITS (фоновая интеллектуальная служба передачи) для самого автоматического обновления возникает проблема на некоторых машинах (пока Windows 7).
Я исследовал и обнаружил, что некоторые задания, которые моя служба добавляет в очередь битов, немедленно завершаются сбоем с кодом ошибки 0x80072efd (не удалось установить соединение с этим сервером). Нет проблем с подключением к серверу для загрузки, поскольку он отлично работает на том же компьютере с IE (или любым другим веб-браузером), а другие клиенты могут подключаться и обновляться с того же сервера.
Я попытался использовать инструмент BITSADMIN.exe, чтобы добавить задания вручную, и они работали нормально. Затем я изменил учетную запись, под которой выполнялась моя служба, на учетную запись сетевой службы, чтобы задания битов создавались с другим владельцем, а задания выполнялись успешно.
Мой вопрос в том, что я не хочу запускать свою службу в качестве этой учетной записи, поскольку у нее не будет необходимых локальных разрешений, поэтому как мне изменить разрешения локального системного пользователя, чтобы разрешить его загрузку из источника HTTP, я не известно о любом способе ограничения этого для этой учетной записи, но, очевидно, это так.
Я выяснил, в чем проблема,
Моя ошибка заключалась в том, что я думал, что BITS использует те же настройки прокси, которые определены в IE, но у него есть свои собственные настройки для учетных записей служб, которые можно изменить только с помощью инструмента BITSAdmin.
Когда я впервые запустил это, он показал неверные настройки прокси
C:\Windows\System32>bitsadmin /util /getieproxy localsystem
поэтому я запустил это, чтобы очистить настройки прокси.
C:\Windows\System32>bitsadmin /util /setieproxy localsystem NO_PROXY
BITSADMIN version 3.0 [ 7.5.7601 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
BITSAdmin is deprecated and is not guaranteed to be available in future versions of Windows.
Administrative tools for the BITS service are now provided by BITS PowerShell cmdlets.
Internet proxy settings for account localsystem set to NO_PROXY.
(connection = default)
C:\Windows\System32>
Наконец, я перезапустил BITS, и задания начали загружаться и завершились без проблем.