为什么我需要保留“$hf_mig$”?

为什么我需要保留“$hf_mig$”?

阅读完微软的解释并且其他一些人,我还是不明白:

当安全更新、关键更新、更新、更新汇总、驱动程序或功能包安装 GDR 版本文件时,修补程序文件也会复制到 %windir%\$hf_mig$ 文件夹中。如果您稍后安装包含这些文件早期版本的修补程序或服务包,这将支持迁移到相应的文件。例如,请考虑以下场景:

您应用了安全更新,该更新安装了 File.dll 的 GDR 版本(版本号为 5.2.3790.1000),并将 File.dll 的修补程序版本(版本号为 5.2.3790.1000)复制到 %windir%\$hf_mig$ 文件夹。

您应用的修补程序包含 File.dll 的修补程序版本,版本号为 5.2.3790.0000。

在这种情况下,步骤 2 中的修补程序安装将安装 %windir%\$hf_mig$ 文件夹中的 File.dll 修补程序版本(版本号 5.2.3790.1000),而不是修补程序包中的 File.dll 修补程序版本(版本号 5.2.3790.0000)。

我不明白。为什么不这样:

  • 您应用第一个包含该版本的东西5.2.3790.1000,旧版本就会被替换。
  • 您应用第二个包含版本的东西5.2.3790.0000,更新程序会发现您的版本较新,因此不会改变该文件。

优点是显而易见的,难道我理解错了?

答案1

  • 并非所有功能都会一次性安装。补丁可能会提供file.dll无人使用的更新。您稍后安装某个功能file.dll,然后获得系统可以提供的最新版本 — — 不一定是安装介质上的版本。
  • 您删除了某项功能。 file.dll被从 中删除%systemroot%\system32。您稍后重新安装该功能(或需要 的其他程序/功能file.dll)。如果您没有 中的缓存版本$hf_mig$,那么您将拥有不安全或不稳定的 版本file.dll。如果您特别不幸,它会通过某种方法安装,从而阻止 Windows Update 正确注意到旧文件版本。
  • 补丁通常会同时针对不同的 SP 级别提供。如果您没有运行最新的服务包,则安装服务包将安装较旧版本的,file.dll而不会安装 中的缓存版本$hf_mig$。或者说您需要卸载 SP — 您将回滚到 中的最新版本,$hf_mig$而不是 SP2(相对于 SP3)提供的版本,这将最大限度地减少您必须通过 Windows 更新重新下载的更新数量。
  • 据我所知,这也可以用于跟踪非版本化文件并确保它们尽可能地最新。

基本上,它用于在初始系统安装和更新后添加和删除 Windows 功能、补丁和服务包的场景。如果您所做的只是安装 Windows,然后立即转到一次“添加/删除功能”,并且只向系统添加更新,那么这可能没有多大意义。对于其他可能在系统生命周期的后期偶尔回滚不良补丁、卸载行为不当的 SP 或在 Windows 中添加功能的人来说,它是必要的,以确保可以尽快提供最新版本的文件,而不是要求用户在每次进行微小的系统更改后重新运行 Windows 更新。

相关内容