移动硬盘更换电脑后文件出现SID格式未知所有者无法访问,批量修改权限受阻求助
移动硬盘更换电脑后文件出现SID格式未知所有者无法访问,批量修改权限受阻求助
兄弟,我太懂你这种逐个右键改权限的崩溃了!先给你理清楚我的问题情况:
问题详情
把移动硬盘换到新电脑后,里面的文件/文件夹所有者全变成了一串S-15-21-17...的SID乱码,现在根本打不开这些文件。目前我只会手动逐个右键改所有权,但效率太低了;更糟的是,选中多个文件时连「安全」选项卡都进不去,完全没法批量操作。
两张截图的情况说明:
- 第一张图里,文件列表的「所有者」列全是类似
S-15-21-17...的SID代码,根本认不出正常用户名 - 第二张图显示,选中多个文件打开属性窗口后,「安全」选项卡直接没法访问,批量操作彻底卡死
亲测有效的批量解决方法
给你几个不用手动逐个改的办法,亲测好用:
方法1:用CMD批量抢回所有权(最快最直接)
- 先右键「开始菜单」→ 选择「Windows 终端(管理员)」(老系统选「命令提示符(管理员)」)
- 输入硬盘盘符切换过去,比如你的硬盘是D盘,就敲:
D: - 接着输入这条命令,一键获取当前目录下所有文件+子文件夹的所有权:
简单解释下参数:takeown /f * /r /d Y/f *:对当前目录下所有文件生效/r:递归处理所有子文件夹,不用挨个进目录/d Y:遇到文件夹时自动确认,不用手动点确定
方法2:用PowerShell批量设置全权限(如果还要改访问权限)
如果抢回所有权后还是没法访问,就用PowerShell批量加权限:
- 同样以管理员身份打开Windows终端(PowerShell模式)
- 切换到硬盘盘符:
Set-Location D: - 复制粘贴下面的命令,给你当前用户加上完全控制权限:
Get-ChildItem -Recurse | ForEach-Object { $acl = Get-Acl $_.FullName $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($env:USERNAME, "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) Set-Acl $_.FullName $acl }
方法3:图形界面绕路批量改(怕命令行的话用这个)
如果实在不想碰命令行,试试这个绕开多文件不能进安全卡的方法:
- 先找一个单独的文件/文件夹,手动右键改好所有权(就按你原来的方法改一次)
- 右键它选「属性」→「安全」→「高级」
- 点击「更改权限」,先勾选「包括可从该对象的父项继承的权限」,点应用
- 再勾选「替换所有子对象权限项」,确认后,这个文件夹下的所有子文件/文件夹都会自动继承这个权限设置,不用一个个改
小提醒
操作前最好先备份下重要文件,虽然这些方法很稳,但不怕一万就怕万一嘛!
备注:内容来源于stack exchange,提问作者user4951




