浏览器不支持(未启用)JavaScript,本页面的某些功能无法正常使用

Windows 重装后 SID/所有权批量修复工具包

适用场景:重装系统后(即使还用同一个用户名),文件/文件夹属性里出现"未知账户", 或者旧硬盘(包括移动硬盘)上的文件提示"拒绝访问"。 原理:Windows 重装会生成新的机器 SID,旧文件的所有者和权限条目里记录的是旧 SID。

需要什么

  • Windows 10/11,PowerShell 7 (pwsh)(没有的话管理员运行:winget install Microsoft.PowerShell
  • 管理员权限(运行时会弹 UAC,点"是")
  • 要修复的硬盘全部接好

使用步骤

1. 修复(改所有权 + 替换所有旧 SID)

管理员 PowerShell 7 中运行:

pwsh -NoProfile -ExecutionPolicy Bypass -File fix_sids.ps1 -Roots "D:;E:;F:;G:;H:;I:"
  • -Roots 换成你自己的盘符列表,分号分隔;不要包含系统盘 C:;不填则自动选择除 C: 外所有卷
  • 脚本会先做一次自检(在临时目录造测试数据验证修复逻辑),通过后才开始处理真实数据
  • 每块盘的处理顺序:takeown /r 批量改所有者 → 逐个对象替换旧 SID(所有者/组/权限条目,含从父目录继承的)
  • 进度写入 %TEMP%\hermes_acl\fix_sids.log;跑完看日志末尾:err=0 fails=0 即完美

2. 恢复盘符(可选,重装后 Windows 会重新分配盘符)

先确认重装前各盘是什么字母(旧笔记/习惯),再编辑 restore_letters.ps1 里的映射表,然后管理员运行:

pwsh -NoProfile -ExecutionPolicy Bypass -File restore_letters.ps1

3. 验证(确认"未知账户"清零)

pwsh -NoProfile -ExecutionPolicy Bypass -File acl_scan.ps1 -Roots "D:;E:;F:;G:;H:;I:;C:\Users"

结果文件在 %TEMP%\hermes_acl\acl_scan_result.txtbad = 0 即全部修复。 (C:\Users\Public 下出现 S-1-5-3/S-1-5-4 是 Windows 系统默认 SID,属正常,不是问题。)

注意事项

  • 修复期间不要关机、不要拔盘;被其它程序占用中的文件可能被跳过(日志里 SET_ERR),关掉程序后重跑一次即可
  • 跳过 $RECYCLE.BINSystem Volume InformationRecovery(系统自己会重建,不用管)
  • 权限级别(完全控制/修改/只读等)原样保留,只是把旧身份换成新身份;不会破坏自定义权限
  • 修复结果只对"这台机器"有效:把盘插到另一台电脑上,那台电脑仍会显示未知(NTFS 权限按机器记)。多机共用建议额外加 Authenticated Users 权限
  • 中途断掉也没关系:脚本幂等,重跑会继续处理剩下的

常见问题

现象 处理
日志 NOT_ELEVATED_ABORT 没管理员权限,用管理员终端重跑
自检 SELFTEST_FAIL 环境异常,先解决权限/磁盘问题,不要强行跳过
errfails 不为 0 看日志对应行;多数是被占用文件,关程序重跑
没有 pwsh winget install Microsoft.PowerShell 后重开终端

工具包下载

三个脚本(管理员 PowerShell 7 运行,均为明文、程序员友好):

标签: Windows 工具包
作者: Lun
日期:2026年09月02日

评论