550 字
3 分钟
在 PE 中迁移 Users 到新磁盘(仅 GUID 链接方案)

这篇只保留 GUID 建链 方案,不使用目标盘符(如 D:\Users)做链接目标。


方案前提#

  1. 你在 PE 里操作,系统盘与目标盘在 PE 下盘符可能变化(例如 E:F:)。
  2. 复制阶段可以使用 PE 盘符,但 建立链接时只用 Volume GUID
  3. 全程在管理员 CMD 执行。

第一步:确认源路径与目标路径(PE 下)#

假设:

  • PE 下系统盘(源)是 E:
  • PE 下目标盘是 F:
  • 需要迁移 E:\UsersF:\Users

第二步:复制 Users(保留权限与所有者)#

Terminal window
robocopy "E:\Users" "F:\Users" /E /COPYALL /DCOPY:DAT /XJD /R:1 /W:3 /MT:8 /TEE /LOG:"F:\users-migrate.log"

参数说明(重点):

  • /E:复制所有子目录(含空目录)。
  • /COPYALL:复制数据、属性、时间戳、ACL、所有者、审核信息。
  • /DCOPY:DAT:目录也复制数据/属性/时间戳,减少权限与时间信息偏差。
  • /XJD:排除目录联接,避免递归复制到链接导致死循环。
  • /R:1:失败重试 1 次(已按你的要求改为 1)。
  • /W:3:每次重试等待 3 秒。
  • /MT:8:8 线程复制,速度更稳定。
  • /TEE:屏幕与日志同时输出。
  • /LOG:"F:\users-migrate.log":输出完整日志,便于回看失败文件。

第三步:保留旧目录备份#

Terminal window
ren "E:\Users" "Users.bak"

第四步:获取目标卷 GUID#

Terminal window
mountvol

在输出中找到目标盘对应的 GUID,例如:

\\?\Volume{adc12345-1234-1234-1234-123456789abc}\

第五步:仅用 GUID 建立 Junction#

Terminal window
mklink /J "E:\Users" "\\?\Volume{adc12345-1234-1234-1234-123456789abc}\Users"

参数说明:

  • /J:创建目录联接(Junction)。
  • 第一个路径 "E:\Users":系统盘下要恢复出来的 Users 入口。
  • 第二个路径 "\\?\Volume{...}\Users":真实目标目录,使用卷 GUID,不依赖盘符映射。

第六步:检查与重启#

  1. 在 PE 中进入 E:\Users,确认能看到目标盘中的用户目录内容。
  2. 重启并进入 Windows,验证桌面、用户配置、应用是否正常。
  3. 确认一切无误后,再删除 E:\Users.bak 释放空间。

常见问题#

你不是管理员 CMD,重新以管理员权限打开命令提示符。

2. 找不到目标卷 GUID#

先确认目标卷已挂载并可读写,再执行一次 mountvol

3. 启动后用户配置异常#

优先检查复制命令是否包含 /COPYALL,以及是否复制完整(查看 users-migrate.log)。

在 PE 中迁移 Users 到新磁盘(仅 GUID 链接方案)
https://iiii.fun/posts/win/migrate-users-guid/
作者
庆灵
发布于
2026-07-08
许可协议
CC BY-NC-SA 4.0