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