From e70cd0f604fef31beec13a7cab4122de371eb13f Mon Sep 17 00:00:00 2001 From: leefer Date: Sat, 19 Sep 2026 21:47:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=8B=E8=BD=BD=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E6=95=B4=E7=90=86=E3=80=81=E4=BF=AE=E5=A4=8D=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81=E5=9B=9E=E6=98=BE?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E5=90=AF=E5=8A=A8=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 下载目录整理:按当天日期在下载目录内建子目录,文件按类型分类(安装包/压缩包/文档/图片/视频/音频/其他),文件夹进日期目录根;跳过下载中临时文件、日期格式旧目录和系统项;支持撤销与每月计划任务 - 修复:重开软件后目录整理页现在回填已保存配置,并以任务计划程序实际状态为准显示开关;撤销按 profile 过滤,桌面与下载互不干扰 - 性能:激活状态查询移出启动流程,仅在 KMS 页/相关操作/手动刷新时按需执行;Defender 状态后台异步刷新;新增状态缓存供下次启动首显 - 去除 D:\desktop 硬编码默认值;Verification 增加下载整理、同日合并、排除规则与撤销过滤测试 --- README.md | 8 +- docs/OPERATIONS.md | 21 ++ src/WindowsToolbox.App/MainWindow.xaml | 40 ++- src/WindowsToolbox.App/ViewModels.cs | 185 +++++++++- src/WindowsToolbox.Cli/Program.cs | 17 +- src/WindowsToolbox.Core/Models.cs | 21 ++ .../ArchiveFileOps.cs | 45 +++ .../DesktopArchiveService.cs | 80 ++--- .../DownloadsTidyService.cs | 337 ++++++++++++++++++ .../SystemStatusService.cs | 100 ++++-- .../ToolboxCommandDispatcher.cs | 8 + tests/WindowsToolbox.Verification/Program.cs | 88 ++++- 12 files changed, 846 insertions(+), 104 deletions(-) create mode 100644 src/WindowsToolbox.Infrastructure/ArchiveFileOps.cs create mode 100644 src/WindowsToolbox.Infrastructure/DownloadsTidyService.cs diff --git a/README.md b/README.md index b0e9071..c0914d3 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,12 @@ - Windows 安全:检测防篡改保护、关闭可控制的 Defender 防护、可选关闭防火墙、恢复原始设置。 - 自动登录:恢复 `netplwiz` 中可能隐藏的密码复选框并打开 Windows 自带账户控制;工具不读取密码。 - 桌面归档:使用 Known Folder API 识别真实桌面,按 `yyyy-MM-dd` 归档普通文件和普通文件夹;排除快捷方式、系统项及重解析目录,自动处理同名文件/文件夹,支持撤销和每月计划任务。 +- 下载目录整理:在下载目录内按当天日期创建子目录,文件按类型(安装包、压缩包、文档、图片、视频、音频、其他)分类移入,文件夹进入日期目录根;跳过正在下载的临时文件和日期格式旧目录,支持撤销和每月计划任务。 - KMS:内置微软公开的 Windows 10/11 GVLK,使用用户填写的本地 KMS 地址,连接成功后才安装密钥,支持恢复原 KMS 主机。 - 系统状态、逐步执行结果及最近 100 次操作历史。 - 多尺寸应用图标,同时用于窗口标题栏、任务栏和 EXE 文件。 -启动时只运行一个有 5 秒硬超时的可选状态查询进程,主窗口不会等待它才显示;普通功能完成后只刷新注册表基础状态,不再重复等待 Defender 与许可证查询。 +启动时立即显示注册表状态和上次安全/激活状态缓存,Defender 状态在后台刷新,激活状态只在打开 KMS 页面时按需查询;主窗口不等待任何重量级查询。普通功能完成后只刷新注册表基础状态。 ## 运行 @@ -52,10 +53,11 @@ artifacts\WindowsToolbox\ ```text %LOCALAPPDATA%\WindowsToolbox\ -├─ ArchiveManifests\ 桌面归档恢复清单 +├─ ArchiveManifests\ 桌面归档与下载整理的恢复清单 +├─ Cache\ 安全与激活状态缓存 ├─ Logs\ 操作历史 ├─ Pending\ 临时提权命令及结果 -└─ Profiles\ 桌面归档配置 +└─ Profiles\ 桌面归档与下载整理配置 %PROGRAMDATA%\WindowsToolbox\ ├─ Assets\ 透明快捷方式图标 diff --git a/docs/OPERATIONS.md b/docs/OPERATIONS.md index 86c296d..9aed406 100644 --- a/docs/OPERATIONS.md +++ b/docs/OPERATIONS.md @@ -32,6 +32,27 @@ 普通隐藏文件会归档。虚拟的“此电脑”“回收站”等系统图标不属于文件系统枚举范围,因此不会移动。同名目标采用 `名称 (1).扩展名` 或 `文件夹 (1)` 递增。每次执行都生成恢复清单;撤销只移动仍然存在于归档目录中的项目。 +## 下载目录整理 + +与桌面归档共用恢复清单和任务计划机制,但整理发生在下载目录内部: + +- 在下载目录下按当天日期创建子目录(如 `2026-09-19`)。 +- 文件按扩展名进入类型子目录:安装包、压缩包、文档、图片、视频、音频、其他。 +- 普通文件夹没有类型可言,直接进入日期目录根。 +- 同日重复整理时复用日期目录,同名项目自动编号。 + +始终原地保留: + +- 名称形如 `yyyy-MM-dd` 的目录(含当天日期目录本身,避免整理结果被再次移动)。 +- `.crdownload`、`.part` 等浏览器下载未完成的临时文件。 +- `desktop.ini`、带 System 属性的项目和重解析点。 + +下载与桌面各自的撤销只读取自己 profile 的最近清单,互不影响。 + +## 状态检测 + +注册表状态即时读取。Defender 状态启动后在后台刷新并写入缓存;激活状态只在打开 KMS 页面、执行相关操作或手动刷新时查询。缓存位于 `%LOCALAPPDATA%\WindowsToolbox\Cache\`,仅用于下次启动的首屏显示。 + ## KMS 密钥目录位于 `data\kms-keys.json`,可以手动维护。激活顺序为: diff --git a/src/WindowsToolbox.App/MainWindow.xaml b/src/WindowsToolbox.App/MainWindow.xaml index 5c32741..7c90932 100644 --- a/src/WindowsToolbox.App/MainWindow.xaml +++ b/src/WindowsToolbox.App/MainWindow.xaml @@ -130,6 +130,8 @@ + + @@ -241,11 +243,12 @@ - - + + - + + @@ -259,7 +262,7 @@ - + @@ -275,6 +278,35 @@