chore: 导入旧记忆备份供恢复

This commit is contained in:
2026-09-23 22:38:40 +08:00
parent 5313fcee7a
commit 6a6a895eaf
638 changed files with 29816 additions and 1 deletions
@@ -0,0 +1,98 @@
---
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: 4
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: openai/gpt-oss-120b
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: baa81064-94f7-44f6-b35a-2ea79347e1a8
created_at: '2026-08-20T02:26:16.121631+00:00'
updated_at: '2026-08-24T10:11:13.248874+00:00'
tags:
- development
- current_state
---
# 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`*
@@ -0,0 +1,96 @@
---
title: WinUnLock 待办任务清单
type: curated
permalink: main/projects/ea207d36-693c-4349-b3c8-7c40c8c889f5/curated/win-un-lock-待办任务清单
stable_id: 4d3a91c8-d950-4373-a19d-66ed6bcc21a6
scope: project
project_id: ea207d36-693c-4349-b3c8-7c40c8c889f5
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: tasks
revision: 5
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: openai/gpt-oss-120b
source_count: 17
source_revisions:
memory:0882a1ad-94c0-4a20-9e3b-f65210c0f8b1: '1'
memory:8db18267-0c12-4446-bfe8-f2f755752c09: '1'
memory:aafb5b5c-34b4-49fd-8aaf-e8933f7b424e: '1'
memory:037f0a1b-4e1a-464a-b90e-89760d92637b: '1'
memory:648be109-d91c-4f4d-a336-c2f04432c3e3: '1'
source_dispositions:
processed: 17
unchanged: 0
unsupported: 0
skipped: 0
cited_source_ids:
- curated_baseline:4d3a91c8-d950-4373-a19d-66ed6bcc21a6
- memory:037f0a1b-4e1a-464a-b90e-89760d92637b
- memory:648be109-d91c-4f4d-a336-c2f04432c3e3
- memory:8db18267-0c12-4446-bfe8-f2f755752c09
- memory:aafb5b5c-34b4-49fd-8aaf-e8933f7b424e
- project:ea207d36-693c-4349-b3c8-7c40c8c889f5
- memory:0882a1ad-94c0-4a20-9e3b-f65210c0f8b1
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
job_cited_source_ids:
- curated_baseline:4d3a91c8-d950-4373-a19d-66ed6bcc21a6
- memory:037f0a1b-4e1a-464a-b90e-89760d92637b
- memory:648be109-d91c-4f4d-a336-c2f04432c3e3
conflicts: []
supersedes: []
preferences: []
source_cursor: 103
source_hash: 4a64fd2a22cf52c37c2891c452140220e743d62d9ef477be0616d478b8794785
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: baa81064-94f7-44f6-b35a-2ea79347e1a8
created_at: '2026-08-19T09:41:29.646745+00:00'
updated_at: '2026-08-24T10:11:16.821889+00:00'
tags:
- development
- tasks
---
# WinUnLock 待办任务清单
## 1. VM 自动解锁完整流程验证
- 在目标 Windows 10/11 x64 VM 中执行:
1. 创建 VM 快照。
2. 以管理员终端运行 `winunlock-admin.exe install --unlock-time 03:00`(示例时间)。
3. 运行 `%PROGRAMDATA%\WinUnLock\bin\setup.exe --account ".\\<本地用户名>"`,交互输入密码,生成 `cred.bin`。
4. 锁屏 (`Win+L`),等待约 3 分钟后观察是否自动解锁。
5. 检查 `%PROGRAMDATA%\WinUnLock\logs\provider.log` 与 `client.log`,记录成功或故障信息。
- 故障排查要点:
- `provider.log` 是否存在(DLL 是否加载/注册)。
- `client.exe` 退出码 **10**(管道不存在)或其他码(配置、DPAPI、凭据读取失败)。
- `ulAuthenticationPackage` 为 0 → LSA 直接拒绝,需要在 Provider 中打印实际包 ID。
- 本地账户使用 `.\\用户名`,域账户使用 `域\\用户` 或 UPN 形式。
## 2. 错误恢复与卸载流程文档化
- 编写恢复指南:
- 在安全模式或 WinRE 中手动删除注册表键 `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers\{E9C67B30-B120-4838-A5A3-FBC2DE03C532}` 与对应的 `HKCR\CLSID` 项。
- 使用 `winunlock-admin.exe uninstall` 完整卸载并恢复默认登录方式。
- 将指南加入 `aidocs/project_context.md` 并使用秒级时间戳记录。
## 3. 代码清理与发布准备
- 移除调试日志、示例代码以及任何硬编码路径。
- 确认 `aidocs/` 已在 `.gitignore` 中,防止记忆文件被提交。
- 生成 Release 版产物:`provider.dll`、`client.exe`、`setup.exe`、`winunlock-admin.exe`。
- 编写简易安装脚本(复制 DLL、注册 Credential Provider、安装服务),脚本头部注明必须以管理员运行。
## 4. 文档与记忆更新
- 在 `aidocs/project_context.md` 中记录本次任务的实现细节、验证方式、遇到的问题以及后续计划,使用秒级时间戳倒序追加。
- 完成后使用 `type: 中文说明` 格式提交代码,例如 `feat: 完成 VM 自动解锁全流程验证`。
*信息来源:`curated_baseline:4d3a91c8-d950-4373-a19d-66ed6bcc21a6`, `memory:037f0a1b-4e1a-464a-b90e-89760d92637b`, `memory:648be109-d91c-4f4d-a336-c2f04432c3e3`*
@@ -0,0 +1,72 @@
---
title: WinUnLock 项目关键事件时间线
type: curated
permalink: main/projects/ea207d36-693c-4349-b3c8-7c40c8c889f5/curated/win-un-lock-项目关键事件时间线
stable_id: 9ef32153-fa89-4819-8648-c9ce26db4c93
scope: project
project_id: ea207d36-693c-4349-b3c8-7c40c8c889f5
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: timeline
revision: 6
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: openai/gpt-oss-120b
source_count: 17
source_revisions:
memory:ffcc24b6-2d1a-46e8-bceb-49e187dd0c20: '1'
memory:67499b3a-97a6-4982-9c16-4afaa59d45f3: '1'
memory:d821d390-15d1-484a-98e1-6d9656f69bfe: '1'
memory:8db18267-0c12-4446-bfe8-f2f755752c09: '1'
memory:9585530b-190e-4157-8226-ef58a3d07dd4: '1'
memory:aafb5b5c-34b4-49fd-8aaf-e8933f7b424e: '1'
memory:981165ad-fc59-490f-b414-495fb36854d0: '1'
source_dispositions:
processed: 17
unchanged: 0
unsupported: 0
skipped: 0
cited_source_ids:
- curated_baseline:9ef32153-fa89-4819-8648-c9ce26db4c93
- memory:981165ad-fc59-490f-b414-495fb36854d0
- memory:8db18267-0c12-4446-bfe8-f2f755752c09
- memory:9585530b-190e-4157-8226-ef58a3d07dd4
- memory:aafb5b5c-34b4-49fd-8aaf-e8933f7b424e
- memory:ffcc24b6-2d1a-46e8-bceb-49e187dd0c20
- memory:67499b3a-97a6-4982-9c16-4afaa59d45f3
- memory:d821d390-15d1-484a-98e1-6d9656f69bfe
job_cited_source_ids:
- curated_baseline:9ef32153-fa89-4819-8648-c9ce26db4c93
conflicts: []
supersedes: []
preferences: []
source_cursor: 103
source_hash: 4a64fd2a22cf52c37c2891c452140220e743d62d9ef477be0616d478b8794785
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: baa81064-94f7-44f6-b35a-2ea79347e1a8
created_at: '2026-08-19T10:01:23.415013+00:00'
updated_at: '2026-08-24T10:11:14.754085+00:00'
tags:
- development
- timeline
---
# WinUnLock 项目时间线(截至 2026‑08‑24)
| 时间 (UTC) | 事件 | 说明 |
|------------|------|------|
| 2026‑08‑24 08:20:59 | 检查点记录 | 项目工作区状态、工具链、构建产物、测试全部通过。 |
| 2026‑08‑24 08:21:53 | 检查点引用 | 本次检查点引用前一次检查点 ID `8db18267-0c12-4446-bfe8-f2f755752c09`。
| 2026‑08‑24 (无具体时间) | VM 预验完成 | Release 构建成功,14 项测试全部通过,确认安装器 `winunlock-admin.exe`、ACL 收紧、`cred.bin` 必须在 VM 内生成。 |
| 2026‑08‑25 (无具体时间) | WinUnLock 磁贴与可见密码测试选项 | 新 Provider 已注册并被 LogonUI 枚举;`setup.exe` 新增 `--show-password` 参数供交互测试。 |
*信息来源:`curated_baseline:9ef32153-fa89-4819-8648-c9ce26db4c93`*
@@ -0,0 +1,101 @@
---
title: WinUnLock 项目关键决策汇总
type: curated
permalink: main/projects/ea207d36-693c-4349-b3c8-7c40c8c889f5/curated/win-un-lock-项目关键决策汇总
stable_id: 937e5888-0a9b-45ee-9312-6e110ef1619b
scope: project
project_id: ea207d36-693c-4349-b3c8-7c40c8c889f5
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: decisions
revision: 1
source_memory_ids:
- 67499b3a-97a6-4982-9c16-4afaa59d45f3
- d821d390-15d1-484a-98e1-6d9656f69bfe
- ffcc24b6-2d1a-46e8-bceb-49e187dd0c20
source_checkpoint_ids: []
source_file_ids: []
source_git_commit: null
source_git_commits: []
source_agent_sync_ids: []
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 15
source_revisions:
memory:d821d390-15d1-484a-98e1-6d9656f69bfe: '1'
memory:67499b3a-97a6-4982-9c16-4afaa59d45f3: '1'
memory:ffcc24b6-2d1a-46e8-bceb-49e187dd0c20: '1'
source_dispositions:
processed: 15
unchanged: 0
unsupported: 0
skipped: 0
cited_source_ids:
- memory:d821d390-15d1-484a-98e1-6d9656f69bfe
- memory:67499b3a-97a6-4982-9c16-4afaa59d45f3
- memory:ffcc24b6-2d1a-46e8-bceb-49e187dd0c20
job_cited_source_ids:
- memory:d821d390-15d1-484a-98e1-6d9656f69bfe
- memory:67499b3a-97a6-4982-9c16-4afaa59d45f3
- memory:ffcc24b6-2d1a-46e8-bceb-49e187dd0c20
conflicts: []
supersedes: []
preferences: []
source_cursor: 92
source_hash: 4ba0814abe7570a9e62a54340ca352579628d92bc49f330cda285b38a0442283
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 745df395-ccaa-47e8-ae23-c469ef26706f
created_at: '2026-08-19T10:01:20.395598+00:00'
updated_at: '2026-08-19T10:01:20.396107+00:00'
tags:
- decision
- architecture
- security
- implementation
---
# WinUnLock 项目关键决策
以下决策直接来源于项目记忆(memory)文档,按重要性分组。
## 1. 项目整体技术方向
- **决定** 实现一个工程化的 **Credential Provider DLL + 命名管道 + 定时解锁客户端**(保留会话、不重启)。放弃 AutoAdminLogon 重启方案,因为需保留当前会话。*来源: [memory:ffcc24b6-2d1a-46e8-bceb-49e187dd0c20]*
## 2. Rust 工作区结构与关键参数
- Rust 工作区划分为四个 crate:
- `common`(管道协议、配置、DPAPI 包装)
- `provider`(cdylib,生成 Credential Provider COM DLL)
- `client`(binary,负责每日定时读取凭据并通过管道发送)
- `setup`(binary,交互式设置账户名/密码并使用 DPAPI 加密)
- 附加 PowerShell 安装/卸载脚本与中文 README。*来源: [memory:d821d390-15d1-484a-98e1-6d9656f69bfe]*
- **唯一 CLSID**:`{E9C67B30-B120-4838-A5A3-FBC2DE03C532}`(新生成,避免冲突)。
- **命名管道**:`\\.\pipe\WinUnLock`
- **数据目录**:`%PROGRAMDATA%\WinUnLock\`(包含 `config.toml`, `cred.bin`(DPAPI 加密凭据),日志子目录 `logs\provider.log`、`logs\client.log`)。
- 已验证的依赖组合:Rust edition 2024,`windows = 0.62.2`,`windows-core = 0.62.2`。
## 3. 管道协议与安全措施
- **管道协议 v1**(小端):
- `magic u32 = 0x554E4C4B ('UNLK')`
- `version u32 = 1`
- `user_len u32` + UTF‑16LE 字符串
- `pass_len u32` + UTF‑16LE 字符串
- `domain_len u32` + UTF‑16LE 字符串
- 长度上限检查,读取完毕后 **zeroize** 内存。
- 数据流:系统计划任务(SYSTEM, Highest) → `client.exe` 读取 `cred.bin`(DPAPI LocalMachine 解密) → 通过命名管道发送凭据(带重试) → Provider 线程接收 → `CredentialsChanged` 通知 LogonUI → `GetSerialization` 调用 `CredPackAuthenticationBufferW` 序列化 → LSA 验证 → 解锁恢复原桌面。
- **安全恢复注意**:如果 Credential Provider 注册错误导致登录卡死,需要进入 WinRE/安全模式手动删除注册表中的 CLSID 项恢复。*来源: [memory:d821d390-15d1-484a-98e1-6d9656f69bfe]*
## 4. 原型验证经验教训(来自 Gitee winlogon 项目)
- 可成功编译生成 `winlogon.dll`(约 256 KB),导出 `DllGetClassObject`、`DllCanUnloadNow`、`DllMain`,说明 Rust cdylib 自动导出。*来源: [memory:67499b3a-97a6-4982-9c16-4afaa59d45f3]*
- **缺陷 & 教训**:
1. `DllMain` 里硬编码日志路径 `D:\log\winlogon.log` 并使用 `.expect()`,导致加载时在不存在路径下 panic → 系统卡住。**决策**:在实现中绝不在 `DllMain` 中 panic,避免硬编码日志路径。
2. README 内容占位、命名不规范、死代码。**决策**:提供完整、中文、使用说明的 README,移除死代码。
3. 必须使用 **长度前缀协议**、**ACL 拒绝远程访问**、**仅在解锁场景激活**、**密码使用后 zeroize**。*来源: [memory:67499b3a-97a6-4982-9c16-4afaa59d45f3]*
## 5. 开发与测试约束
- **协作约定**:AI 负责完整实现(多 crate、安装/卸载脚本、中文文档),用户在虚拟机中验证后再部署到生产机器。
- **禁止** 在开发机器上实际执行 `regsvr32`、修改注册表或创建真实计划任务,只做构建、导出检查等只读验证。*来源: [memory:ffcc24b6-2d1a-46e8-bceb-49e187dd0c20]*
---
*本决策文档仅引用了项目记忆来源,未添加任何未在来源中出现的事实。*
@@ -0,0 +1,180 @@
---
title: WinUnLock 项目概述
type: curated
permalink: main/projects/ea207d36-693c-4349-b3c8-7c40c8c889f5/curated/win-un-lock-项目概述
stable_id: baa442ef-76f5-4390-a518-067156d17d3a
scope: project
project_id: ea207d36-693c-4349-b3c8-7c40c8c889f5
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: overview
revision: 1
source_memory_ids:
- 0882a1ad-94c0-4a20-9e3b-f65210c0f8b1
source_checkpoint_ids: []
source_file_ids: []
source_git_commit: null
source_git_commits: []
source_agent_sync_ids: []
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 12
source_revisions:
memory:0882a1ad-94c0-4a20-9e3b-f65210c0f8b1: '1'
source_dispositions:
processed: 12
unchanged: 0
unsupported: 0
skipped: 0
cited_source_ids:
- project:ea207d36-693c-4349-b3c8-7c40c8c889f5
- memory:0882a1ad-94c0-4a20-9e3b-f65210c0f8b1
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
job_cited_source_ids:
- project:ea207d36-693c-4349-b3c8-7c40c8c889f5
- memory:0882a1ad-94c0-4a20-9e3b-f65210c0f8b1
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
conflicts: []
supersedes: []
preferences:
- statement: 使用最简单且正确的实现(KISS & YAGNI),不为假设的未来需求添加依赖或抽象层。
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
- statement: 优先复用项目已有的框架、服务、工具和约定,避免重复实现。
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
- statement: 在任何登录、SSH、数据库或 API 调用前先查询 Vaultwarden,唯一匹配时自动使用。
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
- statement: 新增或修改的账户、密码、Token、API‑Key 与 TOTP 种子必须立即写入密码库。
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
- statement: 普通记忆只记录密码库条目名称、用途、使用方式,不保存明文凭证。
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
- statement: AI‑驱动的记忆整理与 Git 同步默认关闭,未开启时系统不应尝试加载模型或创建 `.git` 目录。
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
- statement: 项目记忆存放于 `aidocs/project_context.md`,采用秒级时间戳倒序记录,`aidocs/` 加入 `.gitignore`,记忆文件不提交。
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
source_cursor: 89
source_hash: 2b2e3b97e81a12b79f132b76603f0fc21b774662a94ff357a992fe64de84070a
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 3865944f-e527-4841-9c75-2bcbf95b6b94
created_at: '2026-08-19T09:41:26.322861+00:00'
updated_at: '2026-08-19T09:41:26.323331+00:00'
tags:
- 项目概述
- WinUnLock
---
# WinUnLock 项目概述
## 项目定位
- **目标**:在用户拥有的 Windows 电脑上,通过用户自行提供的账号密码,实现每日固定时间的自动解锁(锁屏恢复)
- **合规前提**:全程本地运行,机器归用户所有,凭据仅由用户本人提供,属于合法合规的本机自动化,不涉及未经授权的设备访问。
## 技术路线
- 使用 **Rust** 实现 **Windows Service** + **Credential Provider**(CP)
- 锁定会话不能可靠地通过 `SendInput`/键盘模拟解锁,必须走 Credential Provider DLL → LogonUI 的正规凭据提交路径。
- 关键 API:`Credential Provider COM` 接口、`CPUS_UNLOCK_WORKSTATION`、`GetCredentialCount()`、`GetSerialization()`、`CredPackAuthenticationBufferW`。
- 建议使用账户的文本密码(而非 Windows Hello PIN)进行自动解锁。
- 参考项目:
- 52破解贴([链接](https://www.52pojie.cn/thread-2083713-1-1.html))对应的 Gitee 仓库(Rust 实现 CredentialProvider)
- GitHub 项目 PsyChip/hodor(C++ 实现,处理管道权限、密码清零等)
## 当前状态
- 项目根目录 `E:\code\WinUnLock` 仅包含 `AGENTS.md`,尚未初始化代码,也未创建 Git 仓库。
- 项目已在 MemRelay 中登记,标识为 **development** 工作空间,使用 **shared** 用例配置。
## 开发实施原则(引用全局共享规则)
- **KISS & YAGNI**:采用最简、正确的实现,不为假设的未来需求添加依赖或抽象(源: `memory:0882a1ad-94c0-4a20-9e3b-f65210c0f8b1`、`global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5`)。
- **复用**:优先使用已有框架、服务、工具和约定,避免重复实现(同上)。
- **凭证边界**:在任何登录、SSH、数据库或 API 调用前先查询 Vaultwarden,唯一匹配自动使用;新增或修改的凭证立即写入密码库,记忆仅记录名称、用途、使用方式(源: `global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316`)。
- **可选 AI 与 Git 集成**:默认关闭,不会自动加载模型或创建 `.git` 目录(源: `global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d`)。
- **项目记忆与 Git 工作流**:项目记忆保存在 `aidocs/project_context.md`,采用秒级时间戳倒序记录,`aidocs/` 加入 `.gitignore`,完成任务后清理、更新记忆并使用 `type: 中文说明` 形式提交(源: `global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e`)。
## 开发环境与协作约定
- **语言**:中文沟通为默认;如需其他语言需明确声明(源: `global_guidance_document:ff34c6eb-6bba-41e5-9e43-ff80941fa823`)。
- **平台**:全部命令、路径和验证步骤必须兼容 Windows(同上)。
- **沟通**:持续通报关键进展,独立完成可直接验证并提交。
---
*本文档基于已登记的项目信息及全局共享规则编写。*