未授权访问目录安全异常.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;
}
谁有什么建议,我应该检查,以确保我没有错过任何东西?还有其他方法吗?

未授权访问目录安全异常.SetAccesesControl当用户拥有完全控制权时

我问了IT部门的人,他们提醒我,我正在创建的文件夹是通过网络文件共享访问的。事实证明,即使该帐户对共享中的所有文件和文件夹具有"完全控制"权限,但它也无法访问更改权限,因为它在共享级别没有"完全控制"权限。造成这种情况的原因是我们的数据服务器上的文件夹被打乱了,其中一个IT人员重新创建了共享,但没有重新创建帐户的"完全控制"权限。共享权限可以通过以下命令找到:

  1. 打开共享文件夹
  2. 的属性
  3. 点击"共享"选项卡
  4. 点击"高级共享"
  5. 点击"权限"
  6. 确保帐户具有"完全控制"