中关村在线

服务器

深度分析Windows2003自动升级补丁功能

有读者反映使用批处理Windows自动升级文件有问题。有些补丁包安装时出现了错误提示,无法继续。
经过研究,发现这是由于Windows主要有两类不同的补丁程序,需要使用不同的参数,一旦参数错误,会导致无法安装,所以对不同补丁需要使用不同的参数。我们来具体分析一下。

从图片看补丁类型

如图1,把Windows 2003 Server的补丁文件放在同一个目录,


图1

可以清楚地看到补丁文件名字前面的图标有两种类型,一种是简单的可执行文件图标,另外一种是标志压缩文件的可执行文件图标。



图2

从属性分析格式

WindowsServer2003-KB823559-x86-ENU.exe文件的图标是一个简单的可执行文件图标。从图2中可以看到该补丁的帮助信息,发现它使用微软的update程序来安装补丁。从图3可以查看该补丁的版本信息,它是由SFXCAB.EXE制作而成,所有其他具有普通可执行文件图标的补丁程序都有类似性质。



图3


DirectX9-KB819696-x86-ENU.exe文件的图标是一个标志压缩文件的可执行文件图标,可以查看该补丁的帮助信息。它所认识的参数不包括/U和/Z,如果使用/U 参数来运行就会产生错误。同样,查看该补丁的版本信息,可以看出DirectX9-KB819696-x86-ENU这个补丁是由WEXTRACT.EXE而来的,所有其他的具有标志压缩文件的可执行文件图标的补丁程序也都有类似特征。

现在很清楚了Windows有两类不同的补丁,使用不同的补丁程序,需要参数也不一样。

自动分清补丁的格式

如何在批处理文件中区分这两类不同的补丁呢?最稳妥的办法是找一个小程序检测补丁文件资源信息,如果补丁资源中包括了一个标志压缩文件的可执行文件图标,那么该补丁就是第二类补丁,仅仅使用/Q参数,如果补丁资源中不包括图标,那么就是第一类补丁,可以使用/U /Q /Z参数来安装补丁。

这里给出一个更简单的方法,仅仅使用Windows的内部命令,不需要额外程序了。查找补丁文件中的特征字符串,如果一个字符串仅仅在某一类补丁程序中存在,就可以根据这个来区分补丁的类型。

第一步:如图4,用文本编辑器分别打开WindowsServer2003-
KB823559-x86-ENU.exe 文件和DirectX9-KB819696-x86-ENU.exe文件,可以找到很多特征字符串,如字符串“_SFX_CAB_EXE_PATH”仅仅存在于SFXCAB.EXE类型的补丁中,而字符串“CABINET”和“WEXTRACT”仅仅存在于WEXTRACT.EXE类型的补丁文件中。所以可以用查找字符串的方法来决定补丁文件的类型。



图4

第二步:在“开始→运行”菜单中输入“cmd”,然后进入补丁所在文件夹,运行如下命令,就可以指明该补丁文件需要的参数:

(@findstr _SFX_CAB_EXE_PATH 补丁文件名字 >nul && @echo 参数 /U /Q /Z) || @echo 参数 /Q

上面命令的意思是如果查找到字符串_SFX_CAB_EXE_PATH,就说明补丁使用 /U /Q /Z参数 ,否则使用/Q参数。

第三步:运行结果如图5所示。



一劳永逸的简单方法

如果先识别判断,再根据结果加参数,然后再运行批处理,未免太麻烦了。这里给出完整的批处理命令,可以把判断和安装补丁合二为一:
FOR /R %%F IN (*.exe) DO @((@findstr _SFX_CAB_EXE_PATH "%%F" >nul && @start /wait %%F /U /Q /Z ) || @start /wait %%F /Q )
qchain.exe

把该批处理文件放在补丁目录,不需要把补丁文件集中到同一个目录中,for命令的/R参数会自动搜索所有子目录。注意:对于2002年12月份后的补丁,基本上不需要使用qchain这个命令,新补丁都内置了这个命令。

责任编辑 赵毅 zhaoyi#51cto.com TEL:(010)68476636-8001


[#page_#]

A、代理服务器配置

在“Select a proxy server configuration”中对SUS Server的代理服务器参数进行设置,如果SUS Server是直接或通过路由器接入互联网,一定要选择“Automatically detect proxy server settings”项,如果是通过代理服务器的话,要选择“Use the following proxy server to access the Internet”项,并在输入框中填上代理的IP地址和端口号。

B、指定服务器名

接着在“Specify the name your clients use to locate this update server”栏中为SUS Server起一个好记的名称,如机器名“TJRAO”,这样客户机就可以通过机器名来访问SUS Server了。

提示:如果客户机无法解析NetBIOS名字,这里就要使用DNS名或IP地址来代替机器名了。

C、同步内容配置

在“Select which server to synchronize content from”中设置补丁内容的来源,因为就部署这一台SUS Server服务器,必须与微软的补丁服务器同步,选择“Synchronize directly from the Microsoft Windows Update servers”项。

提示:如果局域网中部署了多台SUS Server,都和微软补丁服务器同步未免浪费大量带宽和时间,只需要其中一台和微软补丁服务器同步,其它的SUS Server和本地的此台SUS Server同步即可。这时就要选中“Synchronize from a local Software Update Services server”项,在输入框中填入目标SUS Server的机器名或者IP地址。

在“Select where you want to store updates”栏中设置保存补丁文件的方式,建议选择“Save the updates to a local folder”项,这样就可以只同步你需要语种的补丁,避免浪费,如只选择同步“Chinese Simplified(简体中文)”,其它参数使用默认值即可,最后点击“Apply”按钮。

(3).同步操作

完成SUS Server参数配置后,就可以进行同步工作,下载用户需要的补丁文件。在管理页面左框点击“Synchronize server”项,接着点击右框的“Synchronize Now”按钮,开始同步工作。

提示:由于受到网络带宽和补丁文件大小的限制,同步工作需要一个漫长的过程。建议选择自动同步,点击“Synchronization Schedule” 按钮,在配置对话框中选择“Synchronize using this schedule”项,设置好同步的日期和时间,建议在凌晨进行同步工作。

(4).发布操作

同步完成后,SUS Server默认并不立即为用户发布补丁文件,当测试补丁没有问题后,才进行手工发布。在管理页面左框点击“Approve updates”按钮,右框显示下载的补丁文件。如果某些补丁测试正常,想进行发布,选中补丁文件前的复选框,点击“Approve”按钮按钮。

然后同意最终用户许可协议后,完成这些补丁的发布工作。这样,就完成了SUS Server的配置。

三、SUS Client配置

以上完成了SUS Server的配置,现在还需要为客户机配置SUS Client,才能使用SUS Server提供的升级服务。由于管理的局域网是工作组环境,所以介绍针对工作组环境的SUS Client配置。

1、是否安装SUS Client

客户机是否要安装SUS Client程序,取决于它采用了哪种操作系统和安装的修复补丁,对于Windows 2000+ SP2和Windows XP的用户,是必须安装SUS Client的。而Windows 2000+ SP3、Windows XP +SP1及其以上版本 和Windows Server 2003的用户则不需要安装,因为系统中已经内置了SUS Client。

2、合理配置SUS Client

A、添加模板

完成SUS Client安装后,还需要对其进行配置。在客户机上,点击“开始→运行”,输入“gpedit.msc”后回车,弹出组策略编辑器,依次展开“计算机配置→管理模板”,右键点击“管理模板”后,选择“添加/删除模版”,在“添加/删除模版”对话框中点击“添加”。

找到“x:windowsinf”目录下的“wuau.adm”(x表示windows的系统盘,默认为C),双击该文件,完成模板的添加。

B、配置组策略

接着依次展开“计算机配置→管理模板→Windows组件→Windows Update”,在右栏中双击“配置自动更新”策略,在属性对话框中配置更新时间和处理方法,选择“已启用”选项,在“配置自动更新”下拉列框中选择“4-自动下载并计划安装”,接着在下面的“计划安装日期”和“计划安装时间”中设置合适的日期和时间,最后点击“确定”。

打开“指定企业内部互联网Windows Update服务位置”策略,选择“已启用”,接着在输入框中指定SUS服务器的位置,可以使用SUS Server机器名或IP地址,最后点击“确定”。

接下来按照上面的方法为局域网中每台客户机配置SUS Client。配置完成后,所有的客户机就可以按照指定的设置,自动连接到SUS Server进行更新,并且所有的更新操作均在后台自动进行的,不需要人为干预。

提示:在工作组环境中,要手工为每台客户机进行SUS Client配置,虽然麻烦些,但对于小型局域网来说还是可以接受的。如果你网络规模较大,建议采用域环境,这样就只需要在域控制器中进行域组策略配置即可,免去了配置客户机的麻烦。

通过以上几步,就完成了SUS系统在局域网中的部署,以后升级就变得非常方便了,即使客户机被限制不能上网,只要SUS Server正常连接到互联网中,升级操作一样不受影响,从此再也不用为Windows升级发愁了。

责任编辑 赵毅 zhaoyi#51cto.com TEL:(010)68476636-8001


展开全文
人赞过该文
内容纠错

相关电商优惠

读过此文的还读过

点击加载更多

内容相关产品

收藏 0 分享
首页查报价问答论坛下载手机笔记本游戏硬件数码影音家用电器办公打印 更多

更多频道

频道导航
辅助工具