一、Windows更新原理
参考链接:docs.microsoft.com/en-us/windo…
windows更新分为两类:1、当前版本内的小迭代更新 2、跨大版本的更新
1.1、 整体框架
1.2、升级流程图
1.3、升级相关的一些重要组件
1.4、升级包括哪些
二、更新关键信息收集
2.1、关于组策略中的一些设置
docs.microsoft.com/en-us/windo… docs.microsoft.com/en-us/windo…
2.2、关于自动更新设备自动重启的设置
docs.microsoft.com/en-us/windo…
2.3、重置windows更新
docs.microsoft.com/en-us/windo…
2.4、本地部署WSUS管理客户端的升级
docs.microsoft.com/en-us/windo… docs.microsoft.com/zh-cn/secur…
2.5、其他信息
support.microsoft.com/en-us/help/… win10快速启动无法安装更新
docs.microsoft.com/en-us/windo… windows更新故障排查
三、更新禁用方法整理
3.1、服务–禁用并立即停止windows更新相关服务
分析方法:
- sc query state= all>c:\sc.txt 导出所有的服务名与显示名称的关系;注册表查询更新相关的调用服务,在sc.txt中查找对应的显示名称;使用windows服务管理器查找显示名称对应的服务描述。
明确与windows更新相关的服务名与描述:
- TrustedInstaller(Windows Modules Installer):调用C:\WINDOWS\servicing\TrustedInstaller.exe -s -TrustedInstaller(启用 Windows 更新和可选组件的安装、修改和移除。如果此服务被禁用,则此计算机的 Windows 更新的安装或卸载可能会失败。)
- wuauserv(Windows Update):调用C:\WINDOWS\system32\svchost.exe -k netsvcs -p -s wuauserv(启用检测、下载和安装 Windows 和其他程序的更新。如果此服务被禁用,这台计算机的用户将无法使用 Windows 更新或其自动更新功能, 并且这些程序将无法使用 Windows 更新代理(WUA) API。)
- UsoSvc(Update Orchestrator Service):调用C:\WINDOWS\system32\svchost.exe -k netsvcs -p -s -UsoSvc(管理 Windows 更新。停止后你的设备将不能下载和安装最新的更新。)
- BITS(Background Intelligent Transfer Service):调用C:\WINDOWS\system32\svchost.exe -k netsvcs -p -s -BITS(使用空闲网络带宽在后台传送文件。如果该服务被禁用,则依赖于 BITS 的任何应用程序(如 Windows 更新或 MSN Explorer)将无法自动下载程序和其他信息。)
- WaaSMedicSvc(Windows Update Medic Service):调用C:\WINDOWS\system32\svchost.exe -k wusvcs -p -s -WaaSMedicSvc(启用Windows更新组件的修复和保护。)
禁用方法:
- 修改注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 下对应的服务项Start值为4(需要TrustedInstaller权限)
[Start取值:0 – boot(由启动引导程序加载的设备驱动);1 – system(在核心初始化过程中启动的设备驱动);2 – 自动(每次计算机重新启动时,甚至没有人登录计算机时,都能自动启动的服务);2(同时DelayedAutostart=1) – delayed-auto(自动延时启动);3 – 手动(必须手动启动的服务。如果没有指定“start=”,这就默认值);4 – 禁用(不能启动的服务);]
3.2、组策略 – 禁用windows更新相关组策略
描述:
- 关闭windows更新策略
- 关闭“更新并关机”的电源选项(重启才能生效。且更新并重启选项不受影响) 禁用方法:
- HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU的子项(子项不存在时表示未配置) NoAutoUpdate:1-禁用自动更新 0-启用自动更新; NoAUShutdownOption:1-启用 0-禁止
- 组策略的数据通过本地Registry.pol文件再回写到注册表的,所以需要改变组策略需要通过IGroupPolicyObject进行修改(查看Registry.pol的工具官网下载链接)
3.3、计划任务 – 禁用windows更新相关计划任务
描述:
- WindowsUpdate下任务Scheduled Start:多触发器触发操作 – C:\WINDOWS\system32\sc.exe start wuauserv(wuauserv已被禁用的情况下该计划任务会失效)
- WindowsUpdate下任务Automatic App Update:多触发器触发操作 – 自定义句柄(描述:自动更新用户的Windows应用商店应用程序)(计划任务InstallService下存在相同调用的任务,暂未发现与windows更新相关)
- WindowsUpdate下任务sih:每隔20小时触发操作 – %systemroot%\system32\sihclient.exe (sihclient.exe – SIH client 用于检测和修复与Windows自动更新、Microsoft软件相关的重要系统组件。暂未发现与windows更新相关)
- WindowsUpdate下任务sihboot:系统启动时触发操作 – %systemroot%\system32\sihclient.exe /boot (看参数与引导相关。暂未发现与windows更新相关)
- WindowsUpdate下任务sihpostreboot:自定义触发器触发操作 – %systemroot%\system32\sihclient.exe /PostReboot (看参数与重启相关。暂未发现与windows更新相关)
- UpdateOrchestrator下任务UpdateAssistant、UpdateAssistantAllUsersRun、UpdateAssistantCalendarRun、UpdateAssistantWakeupRun(网上有资料提及,但找了一些不同版本的windows操作系统都未曾发现这些计划任务)
- UpdateOrchestrator下任务MusUx_UpdateInterval:手动触发操作 – %systemroot%\system32\MusNotification.exe Display(windows通知显示信息。非windows更新核心功能)
- UpdateOrchestrator下任务USO_Broker_Display:自定义触发器触发操作 – %systemroot%\system32\MusNotification.exe Display(windows通知显示信息。非windows更新核心功能)
- UpdateOrchestrator下任务USO_UxBroker:多触发器触发操作 – %systemroot%\system32\MusNotification.exe(在更新安装后通知系统重启。非windows更新核心功能)
- UpdateOrchestrator下任务Reboot:手动触发操作 – %systemroot%\system32\MusNotification.exe ReadyToReboot(windows通知将要重启。非windows更新核心功能)
- UpdateOrchestrator下任务Reboot_AC:禁用状态,手动触发操作 – %systemroot%\system32\MusNotification.exe /RunOnAC RebootDialog(windows通知重启。非windows更新核心功能)
- UpdateOrchestrator下任务Reboot_Battery:禁用状态,手动触发操作 – %systemroot%\system32\MusNotification.exe /RunOnBattery RebootDialog(windows通知重启。非windows更新核心功能)
- UpdateOrchestrator下任务Maintenance Install:禁用状态无触发器,操作 – %systemroot%\system32\usoclient.exe StartInstall(安装更新。虽然是禁用状态,但与windows更新相关)
- UpdateOrchestrator下任务Schedule Scan:多触发器触发操作 – %systemroot%\system32\usoclient.exe StartScan(更新扫描。与windows更新相关)
- UpdateOrchestrator下任务Schedule Scan Static Task:多触发器触发操作 – %systemroot%\system32\usoclient.exe StartScan(更新扫描。与windows更新相关)
- UpdateOrchestrator下任务UpdateModelTask:自定义触发器触发操作 – %systemroot%\system32\usoclient.exe StartModelUpdates(开启更新模块。与windows更新相关) 参考链接:www.idkrtm.com/windows-upd…(Windows Update Commands – USOClient, Powershell, WUAUCLT )
禁用方法:
- 注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks 下遍历所有子键中子项Actions值与usoclient.exe相匹配的子键进行修改
3.4、文件 – windows更新相关文件(实测清理文件无作用)
清单:
- %ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat"--文件的作用不清楚,微软官方说重置windows更新时会删除这类文件。
- %systemroot%\SoftwareDistribution\DataStore--存储Windows Update的补丁列表文件,文件被windows某些服务占用,删除前需要停止服务,微软官方说重置windows更新时需要将文件夹重命名。
- %systemroot%\system32\catroot2--CatRoot2 文件夹中包含了编录数据库文件,运行Windows Update时,catroot2文件夹存储Windows Update软件包的签名,并有助于其安装。微软官方说重置windows更新时需要将文件夹重命名。
- %systemroot%\SoftwareDistribution\Download--windows更新下载的文件存放处,微软官方说重置windows更新时需要将文件夹重命名。
- %systemroot%\Logs\WindowsUpdate--windows更新安装的历史日志。
四、C++禁用和监控Windows更新
前面说了这么多,其实就是从多维度分析更新相关的东西,从而在C++中通过禁用服务、禁用注册表、禁用组策略的方式达成禁用更新的目的;同时借助微软提供的com接口也可以为接管更新做一些事情