C# 在文件夹结构中是否有快速查找(特定用户)权限的方法?

C# 在文件夹结构中是否有快速查找(特定用户)权限的方法?,c#,.net,directory,folder-permissions,C#,.net,Directory,Folder Permissions,我正忙于一个项目,您可以从门户(ASP.NET网站)管理共享驱动器的文件夹权限。在文件夹结构中是否有快速查找用户特定权限的方法?我在文件服务器上运行了一个C#.NET服务 这就是我试图归档的内容: 文件夹结构: RootFolder->TestUser具有特殊权限,因此用户可以导航到Folder1 ->文件夹1-->TestUser已读取(本地) ->文件夹1.1-->TestUser已读取(继承) ->文件夹1.1.1-->TestUser已读取(本地) 现在,我将TestUser从文件夹1中

我正忙于一个项目,您可以从门户(ASP.NET网站)管理共享驱动器的文件夹权限。在文件夹结构中是否有快速查找用户特定权限的方法?我在文件服务器上运行了一个C#.NET服务

这就是我试图归档的内容:

文件夹结构:

RootFolder->TestUser具有特殊权限,因此用户可以导航到Folder1
->文件夹1-->TestUser已读取(本地)
->文件夹1.1-->TestUser已读取(继承)
->文件夹1.1.1-->TestUser已读取(本地)

现在,我将TestUser从文件夹1中删除,但发生这种情况时,我需要知道TestUser是否对结构中的某个文件夹具有权限,如果是这种情况,我需要授予文件夹1和文件夹1.1特殊权限,以便用户可以导航到文件夹1.1.1

我在数据库中拥有完整的文件夹结构和权限,但只有读/写权限,而没有特殊权限(授予用户查看文件夹的权限,以便他/她可以导航到具有读/写权限的文件夹)。现在,如果我可以在文件夹结构中进行快速搜索,查看用户是否具有某些权限,这样我就可以清理/添加用户的特殊权限(这样用户就可以导航到他/她具有读/写权限的所有文件夹),这将是非常棒的

我尝试使用Directory.GetDirectories(fullPath)遍历文件夹结构 然后对每个目录使用dir.GetAccessRules()方法,但对于大文件夹结构(10.000个文件夹),这非常慢

我希望问题是明确的,任何建议都将不胜感激

尝试使用

GetAccessRules(true, false, typeof(SecurityIdentifier))

然后将您的用户帐户预转换为
SecurityIdentifier
,并通过此SID搜索访问规则条目。

首先,在.net中执行此操作会产生巨大的开销。当您获得访问规则时,您为targetType提供了什么类型?如果您不使用SecurityIdentifier,我建议您这样做。使用NTAccount作为targetType会带来耗时的名称解析(SID到帐户名)。第二,你曾经尝试过多线程吗?第三,维护适当的资源调配—最好只授予共享的第一个目录级别上的各种权限,并从此开始使用完全继承。任何子文件夹在ACL中都没有任何新的ACE。请不要在问题标题中包含有关所用语言的信息,除非没有它就没有意义。标记用于此目的。@AcidJunkie我使用以下代码获取访问规则:DirectorySecurity accessControlList=Directory.GetAccessControl(FullPath);AuthorizationRuleCollection accessRules=accessControlList.GetAccessRules(true、false、typeof(System.Security.Principal.NTAccount));可以然后在
NTAccount
SecurityIdentifier
之间进行性能比较。使用SecurityIdentifier时,您首先获得所需用户的SID,然后在ACL@AcidJunkie好的,我会试试看,然后告诉你结果,谢谢你的回复!)顺便说一下,正在运行的服务已经是多线程的。还有一个FileSystemWatcher正在运行以跟踪更改。我无法处理的完全继承,因为我不能冒险让用户看到他们不应该看到的文件夹(project被公司使用,普通用户看不到管理目录)。