微软电脑管家(ahflt.sys)导致 MSI 安装/卸载失败 Error 5 的完整排查实录
症状千奇百怪,根因只有一个:微软电脑管家的 AntiHack 过滤驱动拦截了 Windows Installer 的回滚文件权限操作。本文记录从"Python 卸载报错"一路挖到内核驱动的完整过程。
一、症状:三个看似无关的问题
我的机器上陆续出现了一堆"玄学"问题,最初完全看不出关联:
- 卸载 Python 3.13 时报错:
Could notsetfile securityforfile'E:\Config.Msi\a999e01.rbf'.Error:5.Verify that you have sufficient privileges to modify the security permissions...- 安装 LTspice 反复失败,同样卡在这个莫名其妙的文件上。
- 重装 Python 3.15 自定义到 E 盘,某一步弹出
0x80070659 - 系统策略禁止这个安装。
报错弹窗上那个E:\Config.Msi\xxxx.rbf文件,打开"显示隐藏文件"之后在 E 盘根目录根本找不到——这也曾让我一度怀疑是安装包损坏或磁盘出错。
二、环境信息
- Windows 11(Build 26300)
- C 盘 + E 盘在同一块内置硬盘(NTFS),D 盘是移动硬盘
- 安装/卸载均使用管理员账户
三、排查过程
3.1 先搞清楚 Config.Msi 是什么
Config.Msi是Windows Installer(MSI)的临时回滚仓库:安装/卸载开始时,它会在某个盘的根目录创建这个隐藏文件夹,往里面写.rbf(Rollback File)回滚文件,用于安装失败时还原系统;工作结束后自动删除。
它的两个特性解释了最初的疑惑:
- 它是"受保护的系统文件",只开"显示隐藏的文件"看不到它,还必须取消勾选"隐藏受保护的操作系统文件(推荐)";
- 它用完即删,所以装完再去看当然找不到——这不是文件丢失,是流程本来如此。
另外,它落在哪个盘不是由软件安装目标盘决定的,而是由"剩余空间最大的固定磁盘"决定的(移动硬盘会被排除)。我的 E 盘虽然是剩余空间第二,但第一名的 D 盘是移动硬盘不参与竞争,所以 Config.Msi 每次都落到 E 盘。
3.2 错误码分析
Error 5= ERROR_ACCESS_DENIED,拒绝访问。Installer 想给回滚文件设置安全属性,被拒绝了。0x80070659= Win32 错误 1625 = ERROR_INSTALL_POLICY_FAILURE,“系统策略禁止这个安装”。
3.3 排除法第一轮:权限
E 盘是 NTFS,检查根目录 ACL:
icacls E:\输出中SYSTEM:(F)、Administrators:(F)都在,权限完全正常。手动实验也证明 E 盘权限系统没坏:
echo test > E:\acls_test.txt icacls E:\acls_test.txt /grant Everyone:F :: 成功结论:不是权限问题,是有东西在拦截"设置文件安全属性"这个系统调用。
3.4 排除法第二轮:临时绕过方案
Windows Installer 有一条官方策略DisableRollback:禁用回滚后整个流程根本不再创建.rbf文件,被拦截的操作也就不存在了。
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v DisableRollback /t REG_DWORD /d 1开启后果然绕过了 Error 5(卸载成功),但恢复策略后安装又失败,说明真凶还在,这只是止痛药。
3.5 日志分析:新错误指向新线索
安装 Python 3.15 时打开 Burn 安装日志(%TEMP%下的Python 3.15.2 (64-bit)_xxxx.log),关键行:
Applying executepackage:launcher_JustForMe,action:Installe000:Error0x80070659:Failed to configure per-userMSIpackage.失败的是launcher_JustForMe(给当前用户安装的 py.exe 启动器),1625 策略错误发生在它头上,而它前面的包都装成功了。日志里还有一行:
Detectedpackage:launcher_AllUsers,state:Present——"所有用户版"的启动器早就装过了,这个 per-user 副本是冗余的。取消勾选安装器里的 “py launcher” 后顺利装完。
3.6 缩小包围圈:fltmc 揪出过滤驱动
文件系统上的异常拦截,最常见的就是第三方过滤驱动(Filter Driver)。用系统自带命令列出所有活动的过滤驱动:
fltmc filters在列表里发现了一个可疑对象(其余 bindflt / WdFilter / luafv 等都是微软系统组件):
ClawFlt6385250.3ahflt7385250.13.7 一锤定音:查驱动文件签名
驱动文件都在C:\Windows\System32\drivers\,直接用 PowerShell 打印它的"身份证":
Get-ChildItemC:\Windows\System32\drivers\ahflt.sys|ForEach-Object{"{0} | 公司: {1} | 产品: {2} | 描述: {3}"-f$_.Name,$_.VersionInfo.CompanyName,$_.VersionInfo.ProductName,$_.VersionInfo.FileDescription}输出:
ahflt.sys|公司:Microsoft Corporation|产品:MicrosoftPCManager(R)|描述:AntiHack Filter Driver真凶:微软电脑管家(Microsoft PC Manager)的"防黑客攻击"过滤驱动 ahflt.sys。正是它在内核层拦截了 Installer 对回滚文件的 SetFileSecurity 操作,返回拒绝访问——官方签名的正规软件,却和 Windows Installer 的权限操作八字不合。
四、解决方案
方案一(推荐):卸载微软电脑管家
它的功能与系统自带的 Windows Defender 高度重叠(我的机器上 WdFilter 一直正常工作),且没有给 Windows Installer 加白名单的选项——关掉界面上的防护开关,驱动照样在内核里加载。
设置 → 应用 → 安装的应用 → 搜索"微软电脑管家" → 卸载,重启。
方案二(应急):临时禁用回滚
:: 装/卸之前执行 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v DisableRollback /t REG_DWORD /d 1 :: 装/卸完成后务必恢复 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v DisableRollback /t REG_DWORD /d 0注意两点:
- 禁用回滚期间安装一旦中途失败,可能留下半成品文件需手动清理;
- 这只是绕过,不解决根因,每次都要操作。
五、验证
卸载电脑管家并重启后:
fltmc filters列表中ahflt 已消失;确认策略为0x0:
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /s随后测试:软件正常卸载、LTspice 正常安装、不再出现 Error 5 与 0x80070659。病根彻底拔除。
六、总结:一套可复用的排查方法论
这次从"卸载报错"挖到"内核驱动",用到的方法对任何"装不上 / 卸不掉"类玄学问题都有效:
| 步骤 | 动作 | 命令/工具 |
|---|---|---|
| 1 | 记下弹窗里的错误码 | Error 5 / 0x80070659 等 |
| 2 | 读安装日志定位具体失败的包 | %TEMP%下的 Burn/MSI 日志 |
| 3 | 排除权限问题 | icacls E:\+ 手动改 ACL 实验 |
| 4 | 临时绕过验证方向 | DisableRollback策略 |
| 5 | 列出文件系统过滤驱动 | fltmc filters |
| 6 | 查可疑驱动的文件签名锁定厂商 | Get-ChildItem ...\.sys的 VersionInfo |
| 7 | 卸载元凶,重启验证 | —— |
几个值得记住的结论:
- 安装新版本的软件通常不会自动卸载旧版本,PATH 里排前面的生效;
- Config.Msi 的位置取决于剩余空间最大的固定磁盘,与软件安装目标盘无关;
- “系统策略禁止这个安装”(1625) 与 Error 5 常常指向安全类软件的内核驱动,而不是真的组策略配置;
- 遇到报错先怀疑"安全软件",它的拦截行为没有弹窗、没有日志,最擅长制造玄学。
附:参考命令速查
:: 查看 PATH 中 python 的解析顺序 where.exe python :: 查看所有已安装 Python 版本(py 启动器) py -0 :: 列出过滤驱动 fltmc filters :: 查看指定驱动文件的厂商信息(PowerShell) Get-ChildItem C:\Windows\System32\drivers\ahflt.sys | Select VersionInfo :: Installer 相关策略 reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /s如果你也遇到了Could not set file security for file '?:\Config.Msi\xxxx.rbf'. Error: 5且确认自己权限没问题,不妨先查一下机器上是否装了微软电脑管家。