我有一个 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;
}
有人对我应该检查什么以确保我没有遗漏任何东西有任何建议吗?这样做的任何替代方法?