【发布时间】:2020-07-21 23:05:33
【问题描述】:
我在 C# 中有以下代码:
if (!Directory.Exists(inputFolder))
{
return true;
}
else
{
var me = new DirectoryInfo(inputFolder);
AuthorizationRuleCollection rules = null;
WindowsIdentity identity = null;
try
{
rules = me.GetAccessControl().GetAccessRules(true, true, typeof(SecurityIdentifier));
identity = WindowsIdentity.GetCurrent();
}
catch (UnauthorizedAccessException uae)
{
return false;
}
string userSID = identity.User.Value;
foreach (FileSystemAccessRule rule in rules)
{
if ((rule.FileSystemRights.HasFlag(FileSystemRights.Read) ||
rule.FileSystemRights.HasFlag(FileSystemRights.ReadAttributes) ||
rule.FileSystemRights.HasFlag(FileSystemRights.ReadData) ||
rule.FileSystemRights.HasFlag(FileSystemRights.ReadAndExecute)) && rule.AccessControlType == AccessControlType.Deny)
{
return false;
}
}
return true;
}
它在 Windows 中可以正常工作,但是,当我尝试在 mac OS X (Visual Studio for Mac) 上运行它时,它会在尝试从方法“GetAccessRules”甚至“GetAccessControl”获取信息时引发异常说:
“访问控制列表 (ACL) API 是 Windows 资源管理的一部分,在此平台上不受支持。”
所以这是我的问题:
在 .net 核心中是否有替代方法?或者我应该如何在 .net core 但在 mac OS X 中管理这些权限?
【问题讨论】:
-
如果您想分享您的问题的解决方案,您应该将其发布为答案 - 因为它就是这样 - 而不是将其编辑到问题中。请参阅Can I answer my own question?,简而言之,答案是“是的!”
-
这是我的第一个问题,所以我不知道。我将按照标准进行编辑。谢谢培根!
标签: c# .net macos .net-core acl