当我安装新的 Windows 操作系统(Windows 8.1、Windows 8、Windows 7)时,许多文件和文件夹变得无法访问。我的意思是我无法访问这些文件夹和文件,无法复制、重命名或移动它们,甚至无法删除它们。我没有权限。
如果我想使用这些,每次设置新的 Windows 时我都必须从文件夹或文件安全属性选项卡更改权限。
但问题是改变大量文件和文件夹的权限非常耗时且无聊。
[注意:我所说的文件和文件夹不在 C 盘上。它们位于另一个驱动器上,并且大多数文件都是音频和视频文件。]
为什么会发生这种情况?有没有永久的解决方案,以便我不需要在每次设置 Windows 时更改权限?
以下是一些示例截图:
1)属性
2)高级安全设置
许多文件和文件夹都会出现此问题,但并非驱动器上的所有文件或文件夹都会出现此问题。以下是未出现此问题的文件夹的屏幕截图:
1)属性
2)高级安全设置
答案1
发生这种情况的原因是,旧操作系统安装的文件和文件夹具有分配给新操作系统上不存在的用户的权限。
管理员组中的任何用户都可以“取得”文件/文件夹的所有权。一旦该用户拥有所有权,他/她就可以将权限更改为方便的权限。一种方法是在提升的命令提示符中使用“takeown”和“icacls”命令。输入“命令名/?”命令提示符下将会告诉您如何使用该命令。
您不必逐个更改文件权限,您可以在根文件夹(例如 D:) 上设置权限并将它们传播到所有子文件夹和文件(这称为“递归”)。
答案2
Windows (NTFS) 文件权限存储在由访问控制条目 (ACE) 组成的访问控制列表 (ACL) 中。每个 ACE 对特定用户或组有效。
当您安装新的操作系统并连接先前存在的驱动器时,您可能会看到名为以下内容的用户的 ACE:S-1-5-21-12345678-....
每个用户/组都有一个唯一的内部Id,称为SID,这些SID存储在ACE中。
当显示文件权限时,操作系统会获取 SID 并查找其名称。由于您使用不同的操作系统设置文件的权限,因此所使用的 SID 在当前操作系统上不存在,系统无法解析名称(因此它会显示 SID)。
这应该可以解释为什么您无法访问这些文件,因为具有权限的用户在您当前的安装中根本不存在。
要解决此问题,您可以使用 Windows 域,但这很可能是过度的,或者您只能使用知名的组来获得您的权限。
知名团体在每个 Windows 操作系统上都有相同的 SID,因此即使您安装了新的 Windows,ACE 中使用的 SID 也存在并有效。
一些著名的团体是everyone, users
或administrators
要查看操作系统上更多知名组,请打开 PowerShell 并运行:
get-wmiobject -class "win32_account" -namespace "root\cimv2" | where-object{$_.sidtype -eq 4} | where-object{$_.sid.length -lt 15} | sort name | format-table name, sid -autosize
它显示了如下内容:
Access Control Assistance Operators S-1-5-32-579
Administrators S-1-5-32-544
Backup Operators S-1-5-32-551
Cryptographic Operators S-1-5-32-569
Distributed COM Users S-1-5-32-562
Event Log Readers S-1-5-32-573
Guests S-1-5-32-546
Hyper-V Administrators S-1-5-32-578
IIS_IUSRS S-1-5-32-568
Network Configuration Operators S-1-5-32-556
Performance Log Users S-1-5-32-559
Performance Monitor Users S-1-5-32-558
Power Users S-1-5-32-547
Remote Desktop Users S-1-5-32-555
Remote Management Users S-1-5-32-580
Replicator S-1-5-32-552
Users S-1-5-32-545
并非所有这些组都适合用于 NTFS 权限,因为它们赋予其成员额外的(不需要的)权限/权利,或者其成员资格仅在作为提升的进程(管理员、高级用户)运行时才适用。
如果该users
小组不适合您,您可以使用该Replicator
小组,因为据我所知,它对其成员没有任何副作用。