问题
今天在一台 Windows 7 SP1 的机器上安装 PowerShell 5.1 补丁(KB3191566)时,遇到了 Windows Update 错误 0x80240037,更新死活装不上。
查看了一下C:\Windows\WindowsUpdate.log,搜索这个错误码,发现里面有以下内容:
2026-05-08 18:19:51:023 1352 87c PT +++++++++++ PT: Synchronizing extended update info +++++++++++
2026-05-08 18:19:51:023 1352 87c PT + Offline serviceId = {23372401-029A-4FAC-98A8-9A99235ED6BF}
2026-05-08 18:19:51:179 1352 87c Agent WARNING: Only detected non-exempt updates on device with unsupported processor.
2026-05-08 18:19:51:179 1352 87c Agent FATAL: Device has unsupported processor. Return 80240037.
2026-05-08 18:19:51:179 1352 87c Agent * WARNING: Exit code = 0x80240037
2026-05-08 18:19:51:179 1352 87c Agent *********
2026-05-08 18:19:51:179 1352 87c Agent ** END ** Agent: Finding updates [CallerId = wusa]
2026-05-08 18:19:51:179 1352 87c Agent *************
2026-05-08 18:19:51:179 1352 87c Agent WARNING: WU client failed Searching for update with error 0x80240037
2026-05-08 18:19:51:179 1428 388 COMAPI >>-- RESUMED -- COMAPI: Search [ClientId = wusa]
2026-05-08 18:19:51:179 1428 388 COMAPI - Updates found = 0
2026-05-08 18:19:51:179 1428 388 COMAPI - WARNING: Exit code = 0x00000000, Result code = 0x80240037
2026-05-08 18:19:51:179 1428 388 COMAPI ---------
2026-05-08 18:19:51:179 1428 388 COMAPI -- END -- COMAPI: Search [ClientId = wusa]
2026-05-08 18:19:51:179 1428 388 COMAPI -------------
2026-05-08 18:19:51:179 1428 398 COMAPI WARNING: Operation failed due to earlier error, hr=80240037
2026-05-08 18:19:51:179 1428 398 COMAPI FATAL: Unable to complete asynchronous search. (hr=80240037)
可以看到,这个错误的意思是"不支持的处理器"(Unsupported processor)。Windows Update 检测到了比较新的 CPU(我这台是 Intel Core i5-9500),然后微软的策略就直接拒绝提供服务了。
说白了就是微软为了强推新版本操作系统,人为限制了 Windows 7 / 8.1 在较新处理器上的更新功能。
找方案
问了 AI,搜了些资料,找到了一个叫 wufuc 的项目——专门用来绕过这个限制。
顺着搜索结果去找原始仓库 github.com/zeffy/wufuc,发现已经没了(作者删库或者被 ban 了)。好在有人 fork 并保存了下来。但问题是这些 fork 都没有提供可直接下载的二进制文件,只有源码。
自己动手
那就自己来吧:
- 把代码 clone 下来
- 用 Visual Studio 2022 打开
src\wufuc.sln - 尝试编译,报错了——项目原本是 VS2017 的,VS2022 使用 PlatformToolset v143,有不兼容的地方
- 修掉这些编译错误后,顺利编译出 Release x86 和 x64 的
wufuc32.dll和wufuc64.dll - 把 DLL 复制到
src\wufuc_setup_bat\目录下
编译通过后又顺手做了些清理工作:
- 更新了 README,去掉了所有指向原始仓库的失效链接,改为指向当前仓库
- 写了中英文使用说明,尤其是免确认安装的用法
使用方法
从以下任一地址下载:
- GitHub:https://github.com/achillis2016/wufuc
- Gitee(国内用户推荐):https://gitee.com/achillis/wufuc
在 Releases 页面下载最新的 zip 包,解压后以管理员身份运行 install_wufuc.bat。
如果想要一键免确认安装,在管理员命令行中执行:
install_wufuc.bat /UNATTENDED /NORESTART
安装完成后建议重启系统。重启后 Windows Update 就能正常使用了,那个烦人的 0x80240037 也不会再出现。
原理简述
wufuc 的工作原理不复杂:
- 注册一个开机/登录时触发的计划任务(以 SYSTEM 身份运行)
- 该任务通过 rundll32 加载 wufuc DLL
- DLL 注入到 Windows Update 服务进程(wuauserv)中
- Hook 了
wuaueng.dll中的IsDeviceServiceable()函数,使其永远返回"设备正常"
它不修改任何系统文件,纯粹是运行时内存补丁,安全性较好。
注意事项
- 仅支持 Windows 7 SP1(x64/x86)和 Windows 8.1(x64/x86)
- 不支持 Windows 10/11(这些系统本身就需要较新处理器)
- 如果之前装过 wufuc 0.1~0.5 版本,脚本会自动通过 SFC 恢复被修改的
wuaueng.dll
