我有一个C#控制台应用程序正在创建一个目录,然后尝试为该域用户提供该目录的修改访问权限。该应用程序已经运行了很长时间,但突然间它开始在UnauthorizedAcccesException
方法上抛出DirectorySecurity.SetAccessControl
。
我使用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;
}
有没有人对我应该检查什么有任何建议,以确保我没有遗漏任何东西?有没有其他方法可以做到这一点?
答案 0 :(得分:0)
我与我们IT部门的人员进行了核实,他们提醒我,我正在使用网络文件共享访问我正在创建的文件夹。事实证明,即使该帐户对共享中的所有文件和文件夹具有“完全控制”权限,它也无法访问更改权限,因为它在共享级别没有“完全控制”权限。造成这种情况的原因是我们的数据服务器上的文件夹混乱,其中一个IT人员重新创建了共享但没有重新创建该帐户的“完全控制”权限。共享权限可以通过以下方式找到: