我有一个Windows 7的ucrtbase.dll
安装了该版本Universal C Runtime文件的机器10.0.10586.1412
。
不过,我能找到的针对 Windows 7 修补此文件的最新官方 MS 更新是 KB3118401,其中包含版本中的此文件10.0.10586.9
。
给定这台 Windows-7 机器,我如何才能找出哪个更新 KB 安装了此特定版本ucrtbase.dll
?
我想解决这个问题,因为我们时不时会遇到 Windows 系统 DLL 问题:在我们的开发部门,我们有 5 个不同的 Visual Studio 版本,因此时不时会发生一个开发人员拥有某些 System32 dll 的较新版本,而我们甚至不确定它来自哪里。
我尝试过的事情:
- 将更新安装列表与文件创建日期关联起来。
不幸的是,修补程序历史记录似乎只保留日期,而在磁盘上创建此文件的日期,我似乎安装了大约 100 KB 的修补程序。(预计在此日期批量安装修补程序。) - 正在搜索
%WINDIR%\WindowsUpdate.log
- 时间戳从疑似安装后开始 - 谷歌搜索:没运气。我只找到 KB3118401 和 KB999226(旧版本)。
- 查看所述文件的 WinSxS 文件夹名称。
- 例如,64 位版本的 WinSxSfolder 是
amd64_microsoft-windows-ucrt_31bf3856ad364e35_6.1.7601.23303_none_0a7a73e149361a18
- 我还没有发现这有什么帮助。
- 例如,64 位版本的 WinSxSfolder 是
答案1
在 windows\winsxs 中搜索您的 .dll。您将在其中的一个包中找到它。通过包的文件夹名称,您可以找到它所属的 KB。
在您的情况下,6.1.7601.23303 对应于特定更新,它是 KB 或累积更新。
此外,在以下位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\ComponentDetect
您可能会找到有关此类组件的信息。
通过检查其中文件的日期,您可以间接确定已安装 KB 的日期。
建立良好相关性的最简单方法是运行dism /online /获取软件包.这将列出包版本 (如您的 6.1.7601.23303 案例)和日期软件包已安装,以及知识库包名称。