c++如何读取Windows下的系统补丁安装记录【进阶】

夏强姑娘_1690

夏强姑娘_1690

2026-04-14

925人浏览

原创

最可靠方式是调用 dism.exe /online /get-packages 解析纯文本输出,它无需管理员权限、免com、稳定适合自动化,且能准确列出含 kb 编号的安全补丁及其状态(如 installed、install pending),再结合注册表 currentstate 值交叉验证是否真正生效。

c++如何读取windows下的系统补丁安装记录【进阶】

Windows Update日志文件位置与权限问题

系统补丁安装记录不通过标准API直接暴露,最可靠来源是 C:WindowsWindowsUpdate.log(旧版)或更现代的 ETW 日志。但注意:该文件在 Windows 10 1809+ 默认已停用,且即使存在也需管理员权限读取;普通用户进程打开会触发 Access is denied 错误。

实操建议:

  • 不要硬编码路径并 fopen,先检查 GetLastError() 是否返回 ERROR_ACCESS_DENIED
  • 若目标是 Win10/11,跳过 WindowsUpdate.log,转向 WMI 或 DISM 接口
  • 用 OpenProcessToken + AdjustTokenPrivileges 提权无效——该日志受系统保护,提权无法绕过其 ACL

用 WMI 查询 InstalledUpdates 类(C++ 实现要点)

Win32_QuickFixEngineering 是最常用类,但它只返回 KB 编号、描述、安装时间,不包含状态(如“失败”“回滚”)。真正反映安装结果的是 Win32_InstalledWin32Program 不适用,应改用 Microsoft.Update.Session COM 接口配合 IUpdateSearcher::Search,但该方式只能查待安装项,不能查历史记录。

正确路径是 WMI 的 Win32_QuickFixEngineering,但要注意:

windows-git-ops
windows-git-ops

在 Windows PowerShell 工作区执行 Git 操作时使用此技能,特别适用于创建分支、暂存、提交、合并、状态检查等。

下载
  • 它不返回所有补丁——仅显示通过 Windows Update 安装的、且未被清理的热修复(Hotfix),SP 和累积更新可能缺失
  • 必须链接 wbemuuid.lib,初始化 COM 时用 COINIT_MULTITHREADED,否则 CoCreateInstance 返回 RPC_E_WRONG_THREAD
  • 查询语句写成 "SELECT HotFixID, Description, InstalledOn FROM Win32_QuickFixEngineering",HotFixID 字段值形如 "KB5034441",不是整数

DISM 命令行输出解析(稳定、免COM、适合自动化)

比 WMI 更可靠的方式是调用 dism.exe /online /get-packages,它列出所有已部署的包(含补丁),每条记录含 Package Identity、State(如 Install Pending、Installed)、Release Type(Security Update 等)。输出为纯文本,无编码歧义,且无需管理员权限(只要能执行 dism)。

关键实操点:

  • 用 CreateProcess 启动 dism.exe,重定向 stdout,**必须设置 CREATE_NO_WINDOW 和 STARTF_USESTDHANDLES**,否则子进程卡住
  • 逐行解析时注意:包名含空格和括号,Package Identity 行后紧跟的 State 行才是状态,不能靠字段索引硬切
  • 过滤补丁推荐用正则匹配 ^Package Identity *:.*KB\d+,避免误捕 Package_for_RollupFix 这类内部包

补丁状态 ≠ 安装成功,要交叉验证

仅靠 Win32_QuickFixEngineering 或 dism /get-packages 输出的 State: Installed 不能断定补丁生效。例如:某些 KB 在重启前处于 “Staged”,dism 显示 Install Pending,但系统已记录为已安装;又或者补丁被静默回滚,WMI 仍残留记录。

稳妥做法是组合判断:

  • 查注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages 下各 KB 子项的 InstallTime 和 CurrentState(DWORD,值为 0x0 表示已应用)
  • 对关键 KB,调用 VerifyWindowsUpdate(非公开 API,不推荐)不如用 systeminfo 命令输出中的 “Hotfix(s)” 列表做二次比对
  • 最易忽略的一点:dism /get-packages 输出中 Release Type 为 Language Pack 或 Feature On Demand 的条目,不是安全补丁,不应计入“系统补丁安装记录”主集合

C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

windows c++

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

2023.10.17

580

4

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

2023.10.18

876

5

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

2025.08.19

1866

14

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3108

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

4669

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3729

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

426

15

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.26

3159

3

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.27

2718

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Conan 2 安装指南
Conan 2 安装指南

共0课时 | 0人学习