自动更新使用 WinHTTP 库来路由 TCP 连接。为了通过您的代理连接 WU (wuauserv) 服务,请确保您配置 WinHTTP 库以通过该代理。
要将您的 WinHTTP 库配置为使用自定义代理,请按照以下步骤操作:
- 在提升的命令提示符下键入
网盘
启动 Network Shell 命令行工具,该工具可让您更改 Windows 上的网络。
- 在 NetSh 命令行键入:
netsh>winhttp 重置代理
这将重置 WinHTTP 库的代理设置
- 现在通过在不同的提升命令提示符中键入以下内容来重新启动 Network Awareness Locator 服务
网络停止 NlaSvc && 网络启动 NlaSvc
确认重启依赖网络列表服务。
- 返回 NetSh 并键入
netsh>winhttp 设置代理 XXX.XXX.XXX.XXX:XXXX
其中 XXX.XXX.XXX.XXX:XXXX 是您希望 WU 去的代理服务器的 TCP 套接字,例如
netsh>winhttp 设置代理 10.0.14.212:3128
- 通过键入退出网络外壳
netsh>退出
- 通过在提升的命令提示符下运行重新启动 Windows 更新服务:
net stop wuauserv && net start wuauserv
- 现在打开 %systemroot%\windowsupdate.log 文件以确保您的更新通过代理服务器。
7.1 或者,启动 NetSh 并在其提示符处键入:
netsh winhttp 显示代理
这些设置将使 WU 服务通过已用于运行命令提示符窗口的用户帐户下的指定代理,默认情况下这是您的用户帐户。
为确保 Windows 更新在不同帐户下运行时通过该代理,例如 Windows 更新使用的网络服务或本地服务,请确保在这些特定系统帐户下运行的命令提示符下运行 NetSh。要简化此过程,请下载 Sysinternas Suite 并从那里使用 PSExec 工具。
要使用 LocalSystem 权限以交互方式启动命令提示符窗口,请在命令提示符处键入:
PsExec.exe /s /i cmd
从那里执行 NetSh 命令以应用 LocalSystem 帐户的连接更改。
使用网络服务权限类型以交互方式启动命令提示符窗口
PsExec.exe /i /u "NT AUTHORITY\NETWORKSERVICE" "cmd"
从那里执行 NetSh 命令以应用网络服务帐户的连接更改。
使用本地服务权限类型以交互方式启动命令提示符窗口
PsExec.exe /i /u "NT AUTHORITY\LOCALSERVICE" "cmd"
从那里执行 NetSh 命令以应用本地服务帐户的连接更改。
要使用您的 Microsoft 帐户权限以交互方式启动命令提示符窗口,请按 WindowsKey 并键入 cmd。
右键单击命令提示符图标并从栏中选择打开文件位置。
在打开的 Windows 资源管理器窗口中,按住 Shift 键并选择以其他用户身份运行时,右键单击命令提示符快捷方式。在 Windows 安全对话框中选择 Microsoft 帐户。指定您的 Microsoft 帐户凭据。
使用 whoami 命令检查用于运行启动 Network Shell 工具的命令提示符的帐户。
如果您想使用与 WinInet 库相同的连接设置,Internet Explorer 和大多数桌面应用程序都使用这些连接设置(现代 UI 应用程序使用 WinHTTP 库),请使用
netsh winhttp 导入代理源=ie
将 WinInet 库的设置导入 WinHTTP 库。
另外,请确保通过本地代理路由 BITS 服务。在提升的命令提示符下运行:
C:\Windows\SysWOW64>bitsadmin.exe /Util /GetIEProxy "LocalService"
确保 Windows Update 用于下载更新的后台智能传输服务在使用 LocalService 权限运行时通过您指定的代理运行。
对其他帐户执行相同的检查:
C:\Windows\SysWOW64>bitsadmin.exe /Util /GetIEProxy "LocalSystem"
C:\Windows\SysWOW64>bitsadmin.exe /Util /GetIEProxy "NetworkService"
如果显示 BITS 直接进入,不使用代理,请执行以下操作:
C:\Windows\SysWOW64>bitsadmin.exe /Util /SetIEProxy LocalService MANUAL_PROXY 10.0.14.212:3128 NULL
对其他系统帐户重复相同操作
C:\Windows\SysWOW64>bitsadmin.exe /Util /SetIEProxy "LocalSystem" MANUAL_PROXY 10.0.14.212:3128 NULL
C:\Windows\SysWOW64>bitsadmin.exe /Util /SetIEProxy "NetworkService" MANUAL_PROXY 10.0.14.212:3128 NULL
在 %systemroot%\WindowsUpdate.log 中查找类似的行:
012-09-14 22:50:09:933 624 17f4 WS 警告:使用的代理列表:'proxy.domain.com:port',使用的绕过列表:'(null)',使用的最后一个代理:'proxy.domain。 com:port',最后使用的身份验证方案:'无'。
如果 Windows 更新无法在您的公司代理上进行身份验证并返回 407,请使用 CNTLM 上游到您的公司代理。
希望这会有所帮助。