Files
MemRelay/projects/ea207d36-693c-4349-b3c8-7c40c8c889f5/Checkpoint 2026-08-24 09-44-26 UTC [db6a638039].md
T

2.0 KiB
Raw Blame History

title, type, permalink, stable_id, scope, memory_type, project_id, usage_profile_id, status, revision, request_id, created_at, updated_at, tags
title type permalink stable_id scope memory_type project_id usage_profile_id status revision request_id created_at updated_at tags
Checkpoint 2026-08-24 09:44:26 UTC [db6a638039] checkpoint main/projects/ea207d36-693c-4349-b3c8-7c40c8c889f5/checkpoint-2026-08-24-09-44-26-utc-db6a638039 648be109-d91c-4f4d-a336-c2f04432c3e3 project checkpoint ea207d36-693c-4349-b3c8-7c40c8c889f5 7aee455b-24cc-4008-bdaf-443721e6f939 active 1 winunlock-cpus-logon-fix-20260825 2026-08-24T09:44:26.393747+00:00 2026-08-24T09:44:26.393747+00:00
bugfix
vm-test
credential-provider

修复锁屏 LogonUI 场景兼容性(2026-08-25)

根因

VM 日志显示 SetUsageScenario 收到场景值 1(CPUS_LOGON),而旧代码只接受值 2(CPUS_UNLOCK_WORKSTATION),返回 E_NOTIMPL。因此 LogonUI 不调用 Advise,命名管道没有创建,client 31 次重试全部失败。手动解锁正常,说明账户密码本身无误。

修复

  • provider 现在同时接受 CPUS_UNLOCK_WORKSTATION 和 CPUS_LOGON,保存场景并记录兼容日志。
  • 改密/CredUI 等场景仍拒绝。
  • 未收到管道凭据时仍不请求自动登录,避免冷启动/普通登录抢占默认磁贴。
  • README 同步说明 Windows 版本差异。
  • 新增场景判定单元测试。

验证

  • cargo test --release --target x86_64-pc-windows-msvc:16 个测试通过(common 13、provider 2、其余 0)。
  • cargo build --release --target x86_64-pc-windows-msvc:成功,无警告。
  • git diff --check:通过。
  • 提交:a0f5ff0 fix: 兼容锁屏 LogonUI 场景。

VM 下一步

必须把新构建的 provider.dll、client.exe、setup.exe、winunlock-admin.exe 复制到 VM。推荐先在 VM 管理员终端运行 winunlock-admin.exe uninstall,重启 VM,再安装新产物;随后 setup 使用真实账户名(如 .+Administrator 的正确 PowerShell 字面量为 '.\Administrator' 或 ".\$env:USERNAME"),把计划任务设为未来 2-3 分钟,Win+L 后检查 provider.log 是否出现 Advise: 启动命名管道监听。