39 lines
2.0 KiB
Markdown
39 lines
2.0 KiB
Markdown
---
|
||
title: Checkpoint 2026-08-24 09:44:26 UTC [db6a638039]
|
||
type: checkpoint
|
||
permalink: main/projects/ea207d36-693c-4349-b3c8-7c40c8c889f5/checkpoint-2026-08-24-09-44-26-utc-db6a638039
|
||
stable_id: 648be109-d91c-4f4d-a336-c2f04432c3e3
|
||
scope: project
|
||
project_id: ea207d36-693c-4349-b3c8-7c40c8c889f5
|
||
memory_type: checkpoint
|
||
status: active
|
||
revision: 1
|
||
restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2
|
||
created_at: '2026-09-23T15:11:43.529642+00:00'
|
||
updated_at: '2026-09-23T15:11:43.529718+00:00'
|
||
tags:
|
||
- 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: 启动命名管道监听`。 |