通过ISA代理自动更新Windows

时间:2011-01-15 00:52:44

标签: authentication proxy windows-authentication windows-update

问题描述:是否有办法允许Windows自动更新通过需要NTLM身份验证的ISA代理?

我没有管理员权限或任何访问代理,并且无法避免通过它,我在线阅读有关允许直接访问microsoft.com的建议,但正如我所解释的,我无法访问代理设置。

如何使自动更新有效?

操作系统:Windows XP

2 个答案:

答案 0 :(得分:1)

自动更新使用WinHTTP库来路由TCP连接。为了通过您的代理连接WU(wuauserv)服务,请确保配置WinHTTP库以通过该代理。 要配置WinHTTP库以使用自定义代理,请按照以下步骤操作:

  1. 在提升的命令提示符下键入 netsh的 启动Network Shell命令行工具,允许您更改Windows上的网络。
  2. 在NetSh命令行中输入: netsh> winhttp重置代理 这将重置WinHTTP库的代理设置
  3. 现在,通过在其他提升的命令提示符下键入以下内容来重新启动Network Awareness Locator服务 净停止NlaSvc&&净启动NlaSvc 确认重新启动从属网络列表服务。
  4. 返回NetSh并输入 netsh> winhttp设置代理XXX.XXX.XXX.XXX:XXXX 其中XXX.XXX.XXX.XXX:XXXXX是您希望WU去的代理服务器的TCP套接字,例如 netsh> winhttp set proxy 10.0.14.212:3128
  5. 键入退出网络shell 的netsh>出口
  6. 通过在提升的命令提示符下运行来重新启动Windows Update服务: net stop wuauserv&& net start wuauserv
  7. 现在打开%systemroot%\ windowsupdate.log文件以确保您的更新通过代理服务器。 7.1或者,启动NetSh并在其提示符下键入: netsh winhttp show proxy
  8. 这些设置将使WU服务通过用于运行命令提示符窗口的用户帐户下的指定代理,默认情况下这是您的用户帐户。 要确保Windows Update在不同帐户(例如Windows Update使用的网络服务或本地服务)下运行时通过该代理,请确保在命令提示符下运行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工具的命令提示符的帐户。

    如果要使用与Internet Explorer和大多数桌面应用程序(现代UI应用程序使用WinHTTP库)使用的WinInet库相同的连接设置,请使用 netsh winhttp import proxy source = 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 Update无法在返回407的公司代理上进行身份验证,请将CNTLM用于公司代理的上游。

    希望这有点帮助。

答案 1 :(得分:0)

有一个名为cntlm的工具 它确实允许通过ISA代理,但将它集成到任何应用程序中并不容易。