通常,如果不借助其他工具,当对微软系统安装多个热修复补丁程序,也就是hotfixes时,多个hotfixes的安装必须要遵从一定的次序,而且在每个hotfixes安装后,都必须重新启动计算机。这无疑是非常费心费时的工作。但是有了Qchain这个软件,一切变得轻松简单起来,系统管理员“打”补丁的经常性工作将快捷而准确。
一、什么是热修复补丁程序?
首先请大家熟悉一下微软产品的补丁程序分类。微软公司的产品补丁分为2类:SP(Service Pack)和HotFixes。SP是集合一段时间发布的HotFixes的大补丁,一般称为SP补丁程序,命名规则为SP1、SP2,一段时间才发布一次。HotFixes是小补丁,一般称为热修复补丁程序,它位于当前SP和下一个SP之间,是为解决微软网站上最新安全告示(Security bulletin)中的系统漏洞而发布的,命名规则为"MS年份-序号",比如MS01-044表示2001第44个HotFixes。了解了这些概念,我们就会明白:存在为系统在一个时间内安装多个热修复补丁程序的实际环境需求。
二、不使用Qchain.exe一次安装多个Hotfixes的风险
安装hotfixes时,如果要替换的文件被占用,那么新文件将被另外存放并被记录在注册表的未决文件重命名队列(Pending File Rename queue)键值中,等下一次重新启动计算机后再执行替换操作。根据这个特点,如果一次安装多个hotfixes而不在每个安装后重新启动计算机,就会存在一定的问题。我们来看一个例子:
安装hotfixes A 和hotfixes B ,每次安装后不重新启动计算机。
2个hotfixes中都包含文件X,hotfixes A的文件X版本为3,hotfixes B的文件X版本为2,计算机中的文件X当前版本为1。
首先安装hotfixes A,由于计算机中的文件X被占用,hotfixes A的文件X被记录在注册表的未决文件重命名队列键值中。
然后安装hotfixes B,结果是hotfixes B的文件X被记录在注册表的未决文件重命名队列键值中。
最后重新启动计算机,因为hotfixes B最后安装,它的文件X版本2最终替换替换了计算机中的文件X版本1。显然,这不是我们所期望的结果。
三、下载Qchain.exe
我们可以微软网站的下列地址下载文件Qchain.exe:
http://www.microsoft.com/downloads/release.asp?ReleaseID=29821
双击下载的Exe文件,解压缩出Qchain.exe。
四、使用Qchain.exe链接多个hotfixes安装
Qchain.exe的使用非常简单,语法是qchain [logfilename] ,logfilename表示日志文件名,它记载了多个补丁安装前后的注册表中未决文件重命名队列键值的对比。实际上,QChain.exe的功能就是检查注册表的未决文件重命名队列键值,对多个hotfixes的安装文件进行合适的链接和取舍操作,最终保证被修改文件是最新版本。
下面我们来具体看看如何使用Qchain.exe对多个hotfixes安装进行链接。
1、首先从微软网站的安全子站下载要安装的hotfixes文件,这里假设有3个,分别为hfa.exe、hfb.exe、hfc.exe。
2、hotfixes.exe文件具有多个可选参数,-z表示安装后不重新启动计算机,-m表示安装过程中不出现提示信息。如果使用Windows XP,/Q表示安装过程中不出现提示信息。所以,分别执行以下命令:hfa –z, hfb –z, hfc –z。
3、上述命令全部运行完毕后,执行QChain.exe,它将检查注册表的未决文件重命名队列键值,对hfa、hfb、hfc的安装文件进行合适的链接、取舍等操作,最终保证被修改文件是最新版本。
4、重新启动计算机。
下面是执行Qchain后的一个实际输出信息例子:
---- Old Information In The Registry -----
Source:C:\WINNT\inf\acpi.inf
Version: 5.0.2183.1
Destination:d:\ntsust\testregchech\1394.inf
Version: 5.0.2183.1
Source:C:\WINNT\inf\adm_mult.inf
Version: 5.0.2184.1
Destination:d:\ntsust\testregchech\1394.inf
Version: 5.0.2183.1
Source:C:\WINNT\inf\banshee.inf
Version: 5.0.2080.1
Destination:d:\ntsust\testregchech\1394.inf
Version: 5.0.2183.1
---- New Information In The Registry ------
Source:C:\WINNT\inf\adm_mult.inf
Version: 5.0.2184.1
Destination:d:\ntsust\testregchech\1394.inf
Version: 5.0.2183.1
五、Qchain.exe的不足
对于大多数的Windows NT hotfixes和Windows 2000 hotfixes,Qchain都能够很好地进行安装文件的链接、取舍处理。但是当hotfixes中包含如下注册表键值所示的二进制文件时,就有可能发生问题:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\KnownDLLs
这个注册表键值下所列的二进制文件在系统启动时将被装载进内存。当调用GetFileVersionInfo函数获取其中某个文件的版本信息时,得到的将是内存中的文件版本号,而不是实际路径下的文件版本号。这样,在使用Qchain.exe时就有可能达不到最终的目的。遇到这种情况时,为了确保最后结果的正确,我们可以做的就是:在每个hotfixes安装后都重新启动计算机。