我有 winforms 应用程序,我需要在其中访问安全目录。我正在使用模拟并创建 WindowsIdentity 来访问该文件夹。
我的问题是编写单元测试来测试目录安全性;我想编写一个代码来创建一个仅对一个用户保护的目录,该用户不是运行 UT 的当前用户(否则测试将毫无价值)。
我知道如何为某个用户添加权限,但我如何拒绝其他用户,包括管理员?(如果运行 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 运行,但这会导致:模拟 -> 运行 UT -> 模拟 -> 访问文件夹,我不确定这是否是正确的设计。
非常感谢您的帮助,谢谢。