Initial commit

This commit is contained in:
leefer
2026-08-02 18:08:19 +08:00
commit 89c48131b2
47 changed files with 4743 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
# 架构说明
## 项目组成
```text
WindowsToolbox.App
WPF 界面、MVVM、UAC 客户端
WindowsToolbox.ElevatedHost
固定命令白名单、管理员权限系统修改
WindowsToolbox.Cli
当前用户桌面归档计划任务入口
WindowsToolbox.Infrastructure
注册表、进程、任务计划、快照、各功能实现
WindowsToolbox.Core
命令、状态、结果、快照和配置模型
WindowsToolbox.Verification
不修改系统的自动验证程序
```
## 执行流程
```text
用户点击功能
→ 主程序生成强类型 ToolboxCommand
→ 普通文件操作直接执行
→ 系统操作写入 Pending 目录并请求 UAC
→ ElevatedHost 验证路径、时效和命令类型
→ 首次操作保存基线快照
→ 执行固定实现
→ 读取实际状态进行验证
→ 写入结果和操作历史
→ 主程序刷新系统状态
```
管理员执行器只接受枚举中的命令以及经过各模块验证的参数,不提供任意 CMD、PowerShell 或脚本执行入口。
## 扩展新功能
新增功能时应按以下顺序:
1.`ToolboxCommandKind` 中添加固定命令。
2. 在基础设施项目中实现模块服务。
3. 确定原始状态的完整快照范围。
4.`ToolboxCommandDispatcher` 注册执行分支和提权要求。
5. 在 WPF ViewModel 暴露命令,在页面添加状态、风险说明、应用和恢复入口。
6. 向 Verification 项目增加非破坏性验证。
每个修改操作必须满足幂等、可验证和尽可能可恢复;不能只根据进程退出码显示成功。
+46
View File
@@ -0,0 +1,46 @@
# 系统操作边界
## 右键菜单与快捷方式箭头
经典菜单使用当前用户 Shell 类注册项,并在修改后由普通权限主程序自动重启 Explorer。检测到 Atlas OS 时,同时维护 Atlas Toolbox 使用的状态镜像,实际状态仍以 Explorer 读取的 CLSID 项为准。快捷方式箭头使用系统 `Shell Icons` 覆盖值和工具生成的透明 ICO。
## Windows 更新
强力关闭模式管理:
- Windows Update 自动更新策略。
- `wuauserv``UsoSvc``WaaSMedicSvc` 的可控制启动状态。
- Update Orchestrator 与 Windows Update 中存在且允许修改的计划任务。
- `WindowsToolbox\UpdateGuard` 每日守护任务。
部分服务和任务在不同 Windows 构建中受系统保护。模块会保留每一步结果,不把拒绝访问伪装成成功。
暂停模式写入开始和结束时间,最长限制为 35 天。自动续期任务每天重新请求所选暂停长度并再次验证。
## Windows 安全
模块使用 Defender 和防火墙的 Windows PowerShell Cmdlet。它不会停止 Security Center 核心服务,不会修改系统文件所有权,也不会绕过防篡改保护。恢复时按基线快照逐项恢复 Defender 偏好、三个防火墙配置和通知策略。
## 桌面归档
枚举桌面根目录中的文件和文件夹。默认排除:
- `desktop.ini`
- `.lnk``.url`
- 带 System 属性的文件或文件夹
- 重解析点、目录联接及其他可能指向桌面外部的特殊目录
普通隐藏文件会归档。虚拟的“此电脑”“回收站”等系统图标不属于文件系统枚举范围,因此不会移动。同名目标采用 `名称 (1).扩展名``文件夹 (1)` 递增。每次执行都生成恢复清单;撤销只移动仍然存在于归档目录中的项目。
## KMS
密钥目录位于 `data\kms-keys.json`,可以手动维护。激活顺序为:
1. 验证版本、密钥格式、主机和端口。
2. TCP 测试本地 KMS 主机。
3. 保存原 KMS 主机和端口。
4. 安装所选 GVLK。
5. 设置 KMS 主机。
6. 请求 Windows 激活。
如果连接测试失败,不修改产品密钥。