--- title: WinUnLock 当前状态(截至 2026‑08‑20) type: curated permalink: main/projects/ea207d36-693c-4349-b3c8-7c40c8c889f5/curated/win-un-lock-当前状态截至-2026-08-20 stable_id: 8cf2657a-ec64-4715-88ab-281830560733 scope: project project_id: ea207d36-693c-4349-b3c8-7c40c8c889f5 workspace_type: development usage_profile_id: null preference_context: development document_type: current_state revision: 1 source_memory_ids: [] source_checkpoint_ids: - 037f0a1b-4e1a-464a-b90e-89760d92637b - 648be109-d91c-4f4d-a336-c2f04432c3e3 source_file_ids: [] source_git_commit: null source_git_commits: [] source_agent_sync_ids: [] model_connection: Sub2API model_name: git-restore source_count: 17 source_revisions: memory:711881c1-544e-4195-9a1e-6439dbcd073a: '1' memory:715e4eb8-48b7-4540-9a75-5be72eeb0c7e: '1' memory:8d83fdf5-683a-41ce-94ed-da186cf32c71: '1' memory:4163f161-0f27-476a-bf98-ba407de20919: '1' memory:8db18267-0c12-4446-bfe8-f2f755752c09: '1' memory:aafb5b5c-34b4-49fd-8aaf-e8933f7b424e: '1' source_dispositions: processed: 17 unchanged: 0 unsupported: 0 skipped: 0 cited_source_ids: - curated_baseline:8cf2657a-ec64-4715-88ab-281830560733 - memory:8db18267-0c12-4446-bfe8-f2f755752c09 - memory:aafb5b5c-34b4-49fd-8aaf-e8933f7b424e - memory:8d83fdf5-683a-41ce-94ed-da186cf32c71 - memory:4163f161-0f27-476a-bf98-ba407de20919 - memory:711881c1-544e-4195-9a1e-6439dbcd073a - memory:715e4eb8-48b7-4540-9a75-5be72eeb0c7e - curated_baseline:baa442ef-76f5-4390-a518-067156d17d3a job_cited_source_ids: - curated_baseline:8cf2657a-ec64-4715-88ab-281830560733 conflicts: [] supersedes: [] preferences: [] source_cursor: 103 source_hash: 4a64fd2a22cf52c37c2891c452140220e743d62d9ef477be0616d478b8794785 prompt_version: 2026-08-12.3 schema_version: '3' curation_job_id: null created_at: '2026-08-20T02:26:16.121631+00:00' updated_at: '2026-09-23T15:12:07.936280+00:00' tags: - development - current_state restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2 --- # WinUnLock 当前实现状态 ## 基本信息 - **工作区路径**:`E:\code\WinUnLock`(Git 分支 `main`,HEAD `09662c8`,工作区干净) - **安装方式**:Rust 编写的安装器 `winunlock-admin.exe`(已不再使用 PowerShell 脚本) - **开发工具链**:`rustc 1.94.1`、`cargo 1.94.1`、`stable-x86_64-pc-windows-msvc` ## 构建产物 | 产物 | 大小 | |------|------| | `provider.dll` | 586 752 B | | `client.exe` | 518 656 B | | `setup.exe` | 647 680 B | | `winunlock-admin.exe` | 279 552 B | ## 测试结果(2026‑08‑24) - `cargo test --release --target x86_64-pc-windows-msvc`:全部 **14** 项测试通过(`common` 13、`provider` 1),0 失败。 - `cargo build --release --target x86_64-pc-windows-msvc`:构建成功。 - `winunlock-admin.exe --help` 与 `setup.exe --help` 均返回退出码 **0**,中文帮助信息正常显示。 ## 关键验证要点(面向 VM 的端到端测试前复验) 1. **账户要求**:必须使用可手动解锁的本地文本密码,不能使用 PIN。推荐使用本地管理员账户。 2. **快照**:在安装 Credential Provider 前创建 VM 快照,以便失败后快速恢复。 3. **凭据文件**:`cred.bin` 必须在目标 VM 内由 `setup` 生成,禁止跨机器复制。 4. **安装/配置步骤** - `winunlock-admin.exe install --unlock-time HH:MM`(管理员终端) - `%PROGRAMDATA%\WinUnLock\bin\setup.exe --account ".\\用户名"`,交互输入密码生成 `cred.bin`。 - 锁屏(Win+L),约 3 分钟后观察自动解锁;成功后检查 `client.log` 与 `provider.log`。 5. **故障排查要点** - 无 `provider.log` → DLL 未加载或未注册。 - `client.exe` 退出码 **10** → 命名管道不存在(通常是未锁屏的正常情况)。 - Provider 收到凭据但未提交 → 检查 `CredentialsChanged/GetCredentialCount` 链路。 - 提交后失败 → 检查账户格式、密码或认证包问题。 6. **卸载**:管理员运行 `winunlock-admin.exe uninstall`;如出现锁屏异常,可恢复 VM 快照或在安全模式/WinRE 删除对应 CLSID 注册项。 7. **ACL 注意**:安装器会收紧 `%PROGRAMDATA%\WinUnLock` 的 ACL,仅保留 `SYSTEM`/`Administrators`,后续 `setup` 必须在管理员终端执行。 *信息来源:`curated_baseline:8cf2657a-ec64-4715-88ab-281830560733`*