实际上,我所做的是在我的旧 XP 机器上安装 Windows 7,而且由于我使用的是 x64 并且以前使用过 x32,所以没有升级路径。
我使用用户状态迁移工具 (USMT) 移动了很多东西,对于移动的东西,它修复了文件/目录 ACL,但不是全部。相当多的数据留在驱动器上。
所有剩余数据都具有与 XP 系统相关的 ACL。具体来说,大多数文件都归旧系统的主要用户帐户所有。
那么,如何用新的 SID 替换 ACL 中的一个 SID,并将所有权限从旧用户重新映射到新用户?
答案1
我曾经icacls <path>\* /save aclfile /t
创建过所有权限的备份。必须以管理员身份运行,否则 icacls 无法读取 ACL 来保存它们。
本来我想使用:
icacls /restore aclfile /substitute <oldsid> <newsid>
,但是它不起作用,因为它无法找出 oldsid 的用户名。
所以我使用文本编辑器,用蛮力替换了 aclfile 中的所有引用
然后用来iacls <path> /restore aclfile
放回新的权限。