递归更改所有者 Windows 7

递归更改所有者 Windows 7

不知何故,我意外地将子文件夹中的所有文件设置为“无所有者”,而且我似乎无法更改所有权限。我可以通过更改所有者然后设置权限来手动更改一个文件,但是如何才能一次更改此目录中所有文件的所有者呢?

答案1

使用takeown从命令提示符中递归地获取文件夹、其所有子文件夹和文件的所有权:

takeown /f "c:\folder\subfolder" /r

这很有效,但如果您不以管理员身份运行命令行控制台,它可能会因您不拥有的文件而失败。

答案2

要修复真正损坏的权限,最好的方法是依次运行这两个命令:

takeown /f "C:\path\to\folder" /r
icacls "C:\path\to\folder" /reset /T

第一个选项将授予您所有文件的所有权,但这可能还不够,例如,如果所有文件的读/写/执行权限都设置为“拒绝”。您拥有这些文件,但仍然无法对它们执行任何操作。

在这种情况下,运行第二个命令,它将修复损坏的权限。

答案3

请注意,cacls 已弃用(自 Windows Vista 以来?)并建议您使用icacls

此命令将递归重置文件夹的权限:

icacls "C:\path\to\folder" /reset /T

答案4

我遇到了路径很长(超过 256 个字符)的文件问题。这两个命令

takeown /f "C:\path\to\really_long_folder_name" /r
icacls "C:\path\to\really_long_folder_name" /reset /T

除了这些路径和名称很长的文件外,其他文件都正常工作。我最终重命名了

"C:\path\to\really_long_folder_name"

"C:\path\to\r"

然后运行

takeown /f "C:\path\to\r" /r /D Y
icacls "C:\path\to\r" /grant Everyone:(F) /t /c /q

之后,我可以将文件夹重命名为更合理的名称。takeown 的 /DY 对提示回答“是”。对于 icacls,我使用 /grant 授予所有人完全访问权限(因为我只是想从死机的 PC 访问硬盘上的数据),使用 /t 处理子文件夹和文件,使用 /q 以安静模式运行(隐藏成功),使用 /c 显示错误。我重复该过程,重命名文件夹,直到所有文件权限都成功更新。

希望这可以帮助那些遇到类似错误的人,例如我在尝试访问旧硬盘中的数据时遇到的“无法枚举容器中的对象,访问被拒绝”错误。

相关内容