Safety First
四级安全判定 + 六道检测门
基于 Windows Restart Manager、注册表索引、NTFS Reparse Point 检测等底层能力,每次迁移前并行执行六道安全检测,自动给出四级判定。
✓
Verdict::Safe
安全放行
六道检测门全部通过,无任何 Warning 或 Blocker。目录无进程占用、无硬链接、无 Reparse Point、无注册表绑定,目标卷空间充足且为 NTFS。
Steam 游戏库
用户文档
下载目录
应用缓存
file_locksPASS
boot_driversPASS
hardlinksPASS
reparse_pointsPASS
target_volumePASS
registry_bindingsPASS
⚠
Verdict::SafeAfterAction
需用户操作后放行
存在 Warning 级别发现,但无 Blocker。典型场景:目录中的文件被其他进程占用。CSD 会列出占用进程名称和 PID,用户关闭进程后即可安全迁移。
VSCode 正在运行
Chrome 占用缓存
硬链接文件
file_locksWARN
boot_driversPASS
hardlinksWARN
reparse_pointsPASS
target_volumePASS
registry_bindingsPASS
✗
Verdict::Blocked
默认拒绝
存在 Blocker 级别发现。典型场景:目录包含 Reparse Point(符号链接/Junction),复制阶段会中止;或 Boot 级内核驱动位于此目录;或目标卷非 NTFS / 空间不足。
含 Reparse Point
Boot 驱动目录
目标非 NTFS
file_locksPASS
boot_driversBLOCK
hardlinksPASS
reparse_pointsBLOCK
target_volumePASS
registry_bindingsPASS
🔒
Verdict::SystemCritical
系统关键 · 硬拒绝
路径命中硬编码的 CRITICAL_PATHS 列表或集合根(Program Files 整体、Users 整体、ProgramData 整体等)。不可覆写,不可绕过。迁移此类目录将导致系统无法启动。
C:\Windows\System32
C:\Windows\WinSxS
C:\Program Files(集合根)
C:\Users(集合根)
detector.rs — CRITICAL_PATHS
const CRITICAL_PATHS: &[(&str, &str)] = &[
("C:\\WINDOWS\\SYSTEM32", "Windows 系统核心目录"),
("C:\\WINDOWS\\WINSXS", "Windows 组件存储"),
("C:\\PROGRAM FILES\\WINDOWSAPPS", "Windows 应用商店"),
// ... 30+ 条硬编码规则
];
const CRITICAL_PATHS: &[(&str, &str)] = &[
("C:\\WINDOWS\\SYSTEM32", "Windows 系统核心目录"),
("C:\\WINDOWS\\WINSXS", "Windows 组件存储"),
("C:\\PROGRAM FILES\\WINDOWSAPPS", "Windows 应用商店"),
// ... 30+ 条硬编码规则
];
Six Gates
六道并行检测门
每次迁移前并行执行,单门超时 3s 自动跳过,整体结果缓存 30s
file_locks
通过 Windows Restart Manager 检测目录中 exe/dll/sys 等文件是否被进程占用,最多扫描 32 个关键文件、256 个子目录。
boot_drivers
扫描注册表 Services 键,检测 Boot 级(start=0)和 System 级(start=1)内核驱动是否位于目标目录。Boot 驱动 Blocker。
hardlinks
遍历目录中 exe/dll/sys 等文件的硬链接计数(nNumberOfLinks),跨卷迁移会断裂硬链接关系。最多检查 100 文件,深度 2 层。
reparse_points
递归检测 NTFS Reparse Point(Junction/Symlink),深度 4 层,上限 20000 条目。包含 Reparse Point 的目录直接 Blocker。
target_volume
检测目标卷文件系统是否为 NTFS(Junction 仅在 NTFS 有效),并计算可用空间是否充足。空间需求 = 源大小 + 1% 预留。
registry_bindings
仅在无链接模式(LinkType::None)下触发。扫描 Services、COM 组件、App Paths、计划任务、Uninstall 五类注册表绑定,路径断裂则 Blocker。
Safety
安全迁移,放心使用
四级判定 + 六道检测门,每一步都有保障。