我编写的服务使用BITS(后台智能传输服务)自动更新在某些机器上存在问题(目前是 Windows 7)。
我一直在调查,发现我的服务添加到位队列中的某些作业立即失败,错误代码为 0x80072efd(无法与此服务器建立连接)。连接到服务器进行下载没有问题,因为它在同一台机器上使用 IE(或任何其他 Web 浏览器)运行良好,其他客户端可以从同一台服务器连接和更新。
我尝试使用 BITSADMIN.exe 工具手动添加作业,它们工作正常。然后我将运行我服务的帐户更改为网络服务帐户,这样 Bits 作业将由不同的所有者创建,并且作业成功完成。
我的问题是我不想以这个帐户运行我的服务,因为它没有所需的本地权限,所以我如何更改本地系统用户的权限以允许它从 HTTP 源下载,我不知道是否有任何方法可以限制这个帐户,但显然是有的。
答案1
我已经发现问题所在了,
我的错误是认为 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,作业开始下载并顺利完成。