ディレクトリを作成し、ドメイン ユーザーにディレクトリの変更アクセス権を付与しようとする 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;
}
何も見逃していないことを確認するために何を確認する必要があるかについて、誰か提案はありますか? これを行う別の方法はありますか?