在我的.NET Core单元测试项目中,我正在尝试创建一个文件夹,然后限制访问权限。
到目前为止,我实现了此代码的Windows版本:
DirectoryInfo dirInfo = Directory.CreateDirectory(DriveManager.LogicalDrive + ":\testDir");
DirectorySecurity dirSecurity = new DirectorySecurity(dirInfo.FullName, AccessControlSections.All);
var securityId = System.Security.Principal.WindowsIdentity.GetCurrent().User;
FileSystemAccessRule rule = new FileSystemAccessRule(securityId, FileSystemRights.ListDirectory, AccessControlType.Deny);
dirSecurity.AddAccessRule(rule);
dirInfo.SetAccessControl(dirSecurity);
显然WindowsIdentity.GetCurrent().User
不适用于Unix类型的操作系统。我不确定其他功能是否也不兼容。
你能提出通用解决方案(针对Windows和Unix类型的操作系统)吗?
提前感谢您的支持。
就像你关心的那样,在这里阅读WindowsIdentity.*
API只是Windows功能,在其他系统上没有替代品(每个方法都会抛出PNSE)。临时解决方案可以在project.json
或自脚本中scripts
部分,因为目前可以在Linux和OSX上的干净.Net核心中获取它