未授权访问目录安全异常.SetAccesesControl当用户拥有完全控制权时
本文关键字:拥有 用户 控制权 SetAccesesControl 访问 授权 异常 安全 | 更新日期: 2023-09-27 18:01:33
我有一个c#控制台应用程序,它正在创建一个目录,然后试图为域用户提供目录的修改访问权限。应用程序在很长一段时间内一直工作良好,但突然它开始在DirectorySecurity.SetAccessControl
方法上抛出UnauthorizedAcccesException
。
我已经使用WindowsIdentity.GetCurrent
获得了当前用户帐户,并确认它是我期望的帐户(它冒充高级用户,因为登录用户没有足够的访问权限)。我已经检查了超级用户在创建目录上的权限,他们有完全的控制权。
private DirectoryInfo CreateFolderWithOpenAccess(string directoryPath)
{
DirectoryInfo directory = Directory.CreateDirectory(directoryPath);
DirectorySecurity directorySecurity = directory.GetAccessControl();
if (!HasModifyAccess(directory))
{
directorySecurity.AddAccessRule(
new FileSystemAccessRule(
Settings.Default.DomainUsers,
FileSystemRights.Modify,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlType.Allow
)
);
directory.SetAccessControl(directorySecurity);
}
return directory;
}
谁有什么建议,我应该检查,以确保我没有错过任何东西?还有其他方法吗?
我问了IT部门的人,他们提醒我,我正在创建的文件夹是通过网络文件共享访问的。事实证明,即使该帐户对共享中的所有文件和文件夹具有"完全控制"权限,但它也无法访问更改权限,因为它在共享级别没有"完全控制"权限。造成这种情况的原因是我们的数据服务器上的文件夹被打乱了,其中一个IT人员重新创建了共享,但没有重新创建帐户的"完全控制"权限。共享权限可以通过以下命令找到:
- 打开共享文件夹 的属性
- 点击"共享"选项卡
- 点击"高级共享"
- 点击"权限"
- 确保帐户具有"完全控制"