Windows 磁盘清理工具架构设计:基于 .NET 8 + WPF 实现高性能磁盘分析、系统清理与用户数据迁移

compressed_94803c9e.jpg

在 Windows 系统长期使用过程中,磁盘空间会逐渐被各种文件占满,例如:

  • 系统日志
  • 临时文件
  • 浏览器缓存
  • 软件缓存
  • 用户下载文件

很多用户在 C 盘空间不足时,往往只能通过手动删除文件或使用简单清理工具。但传统清理工具通常存在以下问题:

  • 磁盘扫描速度慢
  • 无法直观查看空间占用
  • 清理规则不透明
  • 删除操作存在安全风险

为了解决这些问题,我开发了一款 专业级 Windows 磁盘分析与清理工具 —— 振华磁盘清理工具(Zhenhua Disk Cleaner)

该工具基于 .NET 8 + WPF 构建,实现了:

  • 高性能磁盘扫描
  • Treemap 磁盘空间可视化
  • 系统垃圾规则清理
  • 用户资料自动迁移

本文将从 系统架构、核心算法、关键技术实现三个层面,详细介绍这款工具的设计与实现。


一、系统整体架构设计

1.1 技术栈

系统采用现代 Windows 桌面应用技术:

技术说明
.NET.NET 8
UI框架WPF
架构模式MVVM
并发模型Task + Parallel
文件系统NTFS

核心依赖:

依赖库作用
CommunityToolkit.MvvmMVVM 框架

1.2 系统模块设计

整个系统被设计为 三个独立模块

                ┌─────────────────┐
                │  磁盘空间分析模块 │
                └────────┬────────┘
                         │
        ┌────────────────┼────────────────┐
        │                                 │
┌───────────────┐                ┌─────────────────┐
│ 系统垃圾清理模块 │                │ 用户资料迁移模块 │
└───────────────┘                └─────────────────┘

模块设计原则:

  • 模块完全解耦
  • 独立 ViewModel
  • 独立 Service 层
  • 独立 UI 窗口

这种架构可以避免复杂系统常见的 模块耦合问题


1.3 项目目录结构

项目整体结构如下:

ZhenhuaDiskCleaner
│
├── Models
├── ViewModels
├── Views
├── Services
├── Controls
├── Helpers
│
├── CleanerModule
│   ├── Models
│   ├── Services
│   ├── ViewModels
│   └── Views
│
├── MigratorModule
│   ├── Models
│   ├── Services
│   ├── ViewModels
│   └── Views

设计特点:

  • 主模块负责 磁盘分析
  • 子模块负责 系统清理和数据迁移
  • Service 层封装核心业务逻辑

二、磁盘扫描引擎设计

磁盘扫描是系统性能的关键。

工具提供 两种扫描模式

扫描模式特点
标准扫描兼容所有文件系统
快速扫描基于 NTFS MFT

2.1 多线程标准扫描

标准扫描使用 多线程遍历目录结构

核心实现:

Parallel.ForEach(
    directories,
    new ParallelOptions { MaxDegreeOfParallelism = 4 },
    dir => ScanDirectory(dir)
);

扫描过程中实时统计:

  • 已扫描文件数量
  • 已扫描文件大小
  • 当前扫描路径
  • 扫描耗时

该模式适用于:

  • FAT32
  • exFAT
  • NTFS

2.2 NTFS MFT 快速扫描

对于 NTFS 磁盘,系统提供 快速扫描模式

扫描方式:

NTFS 磁盘
    │
    └── Master File Table (MFT)
            │
            ├── 文件路径
            ├── 文件大小
            └── 时间戳

MFT(Master File Table)记录了 磁盘上所有文件的元数据

传统扫描方式:

遍历目录 → 读取文件 → 统计大小

MFT扫描方式:

直接读取文件系统元数据

性能提升:

扫描方式速度
普通扫描1x
MFT扫描3~5x

但该模式需要 管理员权限


三、Treemap 磁盘空间可视化

扫描完成后,系统使用 Treemap 算法展示磁盘空间分布。


3.1 Treemap 原理

Treemap 是一种 层级数据可视化算法

每个文件使用一个矩形表示:

+----------------------------------+
|             视频                 |
|      +-------------+             |
|      | 图片        | 文档        |
|      +-------------+             |
|                                  |
|           压缩文件               |
+----------------------------------+

规则:

  • 面积 = 文件大小
  • 颜色 = 文件类型

3.2 Squarified Treemap 算法

本工具实现了 Squarified Treemap

算法目标:

  • 减少极端长条矩形
  • 使矩形尽量接近正方形

算法流程:

排序节点
   ↓
逐行填充
   ↓
计算最佳长宽比
   ↓
生成矩形布局

算法实现位于:

Helpers/TreemapAlgorithm.cs

3.3 高性能渲染

Treemap 使用 DrawingVisual 渲染。

原因:

方案性能
UIElement较慢
DrawingVisual高性能

优势:

  • 减少 UI 元素数量
  • 支持上万节点渲染
  • 渲染效率更高

四、系统垃圾清理系统

磁盘分析后,系统提供 系统垃圾清理模块

该模块基于 规则驱动架构


4.1 清理规则设计

清理规则定义在:

rules.json

系统内置:

类型数量
推荐清理24
专业清理63
总计87

4.2 规则扫描流程

扫描流程:

加载规则
   ↓
并行扫描
   ↓
统计大小
   ↓
展示结果

示例规则:

Windows临时目录
Chrome缓存
npm缓存
pip缓存
VS缓存

4.3 安全删除机制

为了防止误删,系统实现了 三级安全机制

文件类型处理方式
系统文件跳过
占用文件重启删除
普通文件直接删除

4.4 重启删除技术

当文件被进程占用时,使用:

MoveFileEx
PendingFileRenameOperations

流程:

注册删除任务
    ↓
系统重启
    ↓
系统启动阶段删除文件

该方法是 Windows 官方推荐方案


五、用户资料迁移系统

C盘空间占用最大的一类文件通常是 用户目录

  • Desktop
  • Downloads
  • Documents
  • Pictures

因此工具实现了 自动迁移功能


5.1 迁移流程

完整流程:

扫描用户文件夹
      ↓
选择目标磁盘
      ↓
预检验证
      ↓
robocopy复制
      ↓
注册表重定向
      ↓
验证
      ↓
删除源目录

5.2 文件复制引擎

复制采用 Windows 最稳定工具:

robocopy

参数:

robocopy /E /COPY:DAT /R:1 /W:1

含义:

参数作用
/E复制所有子目录
/COPY:DAT数据、属性、时间
/R重试次数
/W等待时间

5.3 注册表路径重定向

Windows 用户文件夹路径位于:

HKCU
 └─ Software
     └─ Microsoft
         └─ Windows
             └─ CurrentVersion
                 └─ Explorer
                     └─ User Shell Folders

迁移时需要:

1️⃣ 修改 User Shell Folders
2️⃣ 修改 Shell Folders

并调用:

SHSetKnownFolderPath

通知 Windows Shell 刷新路径。


六、实时文件监控

磁盘分析模块使用:

FileSystemWatcher

监控文件变化:

事件说明
Created创建
Deleted删除
Renamed重命名
Changed修改

实现 实时刷新磁盘分析数据


七、关键技术总结

整个系统涉及多个 Windows 底层技术:

技术方向技术方案
架构模式MVVM
UI系统WPF
磁盘扫描多线程 + MFT
可视化Treemap
文件监控FileSystemWatcher
垃圾清理SHFileOperation
重启删除MoveFileEx
文件复制robocopy
路径迁移注册表 + SHSetKnownFolderPath

八、总结

振华磁盘清理工具不仅是一个简单的磁盘清理软件,更是一个 高性能 Windows 运维工具

核心技术亮点包括:

  • NTFS MFT 快速扫描
  • Treemap 磁盘空间可视化
  • 规则驱动垃圾清理系统
  • robocopy 用户数据迁移
  • 注册表路径自动重定向

通过这些技术,该工具实现了:

  • 更快的磁盘扫描
  • 更直观的空间分析
  • 更安全的系统清理
  • 更方便的数据迁移

项目开源地址https://github.com/qyhua0/zhenhuaDiskCleaner

标签: none

添加新评论