Edge 密码同步 1046 条却全部失败:从 Model error type 10 定位到 Windows DPAPI

发布时间:2026/7/29 2:52:49
Edge 密码同步 1046 条却全部失败:从 Model error type 10 定位到 Windows DPAPI 问题现象Edge 的其他同步项目基本正常但密码始终无法完成同步。在edge://sync-internals/中Passwords 一项显示Passwords 1046 1046 Error: MergeFullSyncData components\password_manager\core\browser\sync\password_sync_bridge.cc:774 Model error type: 10 Failed最初看起来像是 Edge 配置文件、云端数据或网络出了问题。但进一步分析后发现真正的问题在 Windows 的用户数据加密系统 DPAPI。分析过程1. 确认云端数据是否正常查看 Edge 的同步诊断日志%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\ Sync Data\Logs\sync_diagnostic.log日志显示密码数据被分批成功下载ProcessGetUpdates dataType: Passwords process_failed_to_decrypt: 0 process_success: 250全部批次合计云端记录总数1128 删除记录82 有效密码1046 解密失败0这说明Microsoft 账号正常网络正常Edge 能连接同步服务器云端密码可以正常解密1046 条密码仍然存在于云端因此问题不在云端而是在写入本地密码库的阶段。2. 检查本地密码数据库Edge 的密码数据库主要位于%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Login Data %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Login Data For Account对两个 SQLite 数据库执行完整性检查后结果都是PRAGMA quick_check ok但相关表的记录数全部为 0logins0 sync_entities_metadata0 sync_model_metadata0数据库本身没有损坏但云端密码始终无法写进去。3. 理解 Model error type 10查看 Chromium 对应源码后可以确认Model error type: 10对应kPasswordMergeAddFailed它表示 Edge 在执行AddCredentialSync()时无法把云端密码添加到本地密码库。可能原因主要有本地 SQLite 写入失败本地密码加密失败Windows DPAPI 无法生成或访问用户主密钥磁盘空间、文件权限和 SQLite 完整性都正常所以排查方向转向了 DPAPI。4. 测试 Windows DPAPI可以使用 PowerShell 做一次不包含真实密码的加密往返测试$plain[Text.Encoding]::UTF8.GetBytes(dpapi-self-test)$cipher[Security.Cryptography.ProtectedData]::Protect($plain,$null,[Security.Cryptography.DataProtectionScope]::CurrentUser)$round[Security.Cryptography.ProtectedData]::Unprotect($cipher,$null,[Security.Cryptography.DataProtectionScope]::CurrentUser)[Text.Encoding]::UTF8.GetString($round)故障状态下Protect()直接返回拒绝访问Windows 的 DPAPI 事件日志也出现了Status: 0x8009000B ReasonForFailure: Could not get the master key Master key access failed事件日志位置事件查看器 应用程序和服务日志 Microsoft Windows Crypto-DPAPI Operational至此可以确定Edge 下载密码后需要使用当前 Windows 用户的 DPAPI 加密密码再写入数据库但 DPAPI 主密钥不可用所以整个同步事务被回滚。根本原因继续比较 Windows 登录时间和本地账户的PasswordLastSet后发现当前 Windows 会话在修改密码之前就已经登录Microsoft 账户密码在该会话期间发生过更改或重置后续一直使用 PIN、指纹或人脸解锁当前会话没有刷新 Microsoft 账户密码凭据PIN 可以解锁 Windows但它并不等同于 Microsoft 账户密码。某些情况下密码修改后继续使用旧会话和 PIN会导致 DPAPI 无法重新解锁用户主密钥。这也是为什么重启 Edge、重置同步甚至删除 Edge 资料都不一定有效。解决方法1. 先备份在进行任何操作前建议备份%LOCALAPPDATA%\Microsoft\Edge\User Data\Local State %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Login Data* %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Sync Data %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Preferences %APPDATA%\Microsoft\ProtectMicrosoft\Protect包含 Windows DPAPI 主密钥不要直接删除。它不仅影响 Edge也可能影响其他应用保存的凭据。2. 更新并完全关闭 Edge将 Edge 更新到最新版本然后确认所有msedge.exe进程已经退出。更新不是本次问题的决定性修复但可以排除已修复的浏览器缺陷。3. 使用 Microsoft 账户密码重新验证先锁定 WindowsWin L在登录界面选择“登录选项”使用 Microsoft 账户密码登录不能使用PIN指纹人脸识别如果锁屏后使用密码仍未恢复则完整注销 Windows再使用 Microsoft 账户密码重新登录一次。不要通过管理员命令重置账户密码因为强制重置可能进一步导致旧 DPAPI 数据无法解密。4. 重新启动 Edge重新登录后启动 Edge等待密码数据类型重新配置。再次执行 DPAPI 测试此时应当可以正常完成加密和解密。修复结果重新使用 Microsoft 账户密码登录后Edge 自动恢复同步无须删除个人资料Login Data: logins1046 sync_entities_metadata1046 sync_model_metadata1同步日志中不再出现新的MergeFullSyncData Model error type: 10edge://sync-internals/中的 Passwords 状态也恢复正常。总结这次问题表面上是 Edge 密码同步失败实际链路是云端密码下载成功 ↓ 云端密码解密成功 ↓ Edge 尝试写入本地密码库 ↓ Windows DPAPI 主密钥不可用 ↓ AddCredentialSync 失败 ↓ 事务回滚 ↓ Model error type: 10遇到类似错误时不要第一时间删除 Edge 资料或清空云端同步数据。先检查同步日志、SQLite 数据库和 Windows DPAPI 状态。尤其是在近期修改过 Microsoft 账户密码、但一直使用 PIN 登录的情况下使用账户密码重新完成一次 Windows 身份验证往往才是关键修复步骤。