安全なディレクトリにアクセスする必要があるwinformsアプリがあります。偽装を使用しており、フォルダーにアクセスするために WindowsIdentity を作成しています。
私の問題は、ディレクトリのセキュリティをテストするための単体テストを作成することです。UT を実行している現在のユーザーではない 1 人のユーザーのみに保護されたディレクトリを作成するコードを書きたいと思います (そうしないと、テストの価値がなくなります)。
特定のユーザーにアクセス許可を追加する方法は知っていますが、管理者を含む残りのユーザーを拒否するにはどうすればよいですか? (UT を実行しているユーザーが管理者の場合) (これは賢明なことでしょうか?)
DirectoryInfo directoryInfo = new DirectoryInfo(path);
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
directorySecurity.AddAccessRule(new FileSystemAccessRule("Domain\SecuredUser",
FileSystemRights.FullControl,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly,
AccessControlType.Allow));
directorySecurity.RemoveAccessRule(new FileSystemAccessRule("??",
FileSystemRights.FullControl,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly,
AccessControlType.Deny));
directoryInfo.SetAccessControl(directorySecurity);
これは機能していません。誰を否定したらいいのかわからない。Domain\Admins、Domain\Administrators、私... 誰も拒否されておらず、フォルダーのセキュリティを確認すると、SecuredUser はフォルダーにアクセスできますが、FullControl を指定したにもかかわらず、アクセス許可が確認されません。
基本的に私はこれをコーディングしたい:
<authorization>
<allow users ="Domain\User" />
<deny users="*" />
</authorization>
権限のない弱いユーザーで UT run を偽装しようと考えていたのですが、Impersonate -> Run UT -> Impersonate -> Access folder という結果になり、これが正しい設計かどうかわかりません。
助けていただければ幸いです、ありがとうございます。