c# – 重复GetAccessRules,FileSystemAccessRule条目
发布时间:2020-12-15 04:07:37 所属栏目:百科 来源:网络整理
导读:我从以下代码获取了一个重复的FileSystemAccessRule: C:inetpubwwwrootAspInfoAccountBUILTINIIS_IUSRS : Allow : ReadAndExecute,SynchronizeBUILTINIIS_IUSRS : Allow : -1610612736NT SERVICETrustedInstaller : Allow : FullControlNT SERVICET
我从以下代码获取了一个重复的FileSystemAccessRule:
C:inetpubwwwrootAspInfoAccount BUILTINIIS_IUSRS : Allow : ReadAndExecute,Synchronize BUILTINIIS_IUSRS : Allow : -1610612736 NT SERVICETrustedInstaller : Allow : FullControl NT SERVICETrustedInstaller : Allow : 268435456 我无法解决什么或为什么. 并且显示的权限与我可以看到文件FileManager属性不匹配. protected void directoryInfo() { var di = new DirectoryInfo(Server.MapPath("/")); foreach (DirectoryInfo dir in di.GetDirectories()) { Response.Write(dir.FullName + "<br/>"); DirectorySecurity ds = dir.GetAccessControl(); foreach (FileSystemAccessRule fsar in ds.GetAccessRules(true,true,typeof(System.Security.Principal.NTAccount))) { string userName = fsar.IdentityReference.Value; string userRights = fsar.FileSystemRights.ToString(); string userAccessType = fsar.AccessControlType.ToString(); Response.Write(userName + " : " + userAccessType + " : " + userRights + "<br/>"); } } } 解决方法
您将获得继承的规则和明确设置在该文件夹上的规则的单独的规则条目.根据每个规则的传播设置,也有差异.例如,您可以拥有一组设置为传播到子文件夹的权限,以及与文件夹中的文件不同的一组权限.您的代码还会在您希望访问权限(DACL)的文件夹上获得审核规则(SACL).
尝试这个: protected void directoryInfo() { var di = new DirectoryInfo(Server.MapPath("/")); foreach (DirectoryInfo dir in di.GetDirectories()) { Response.Write(dir.FullName + "<br/>"); DirectorySecurity ds = dir.GetAccessControl(AccessControlSections.Access); foreach (FileSystemAccessRule fsar in ds.GetAccessRules(true,typeof(System.Security.Principal.NTAccount))) { string userName = fsar.IdentityReference.Value; string userRights = fsar.FileSystemRights.ToString(); string userAccessType = fsar.AccessControlType.ToString(); string ruleSource = fsar.IsInherited ? "Inherited" : "Explicit"; string rulePropagation = fsar.PropagationFlags.ToString(); string ruleInheritance = fsar.InheritanceFlags.ToString(); Response.Write(userName + " : " + userAccessType + " : " + userRights + " : " + ruleSource + " : " + rulePropagation + " : " + ruleInheritance + "<br/>"); } } } 您看到的ReadAndExecute权限包括“列表文件夹内容”权限.您可以使用FileSystemRights枚举中的相应标志来检查个人权限.例如: if (fsar.FileSystemRights && FileSystemRights.ListDirectory) Console.WriteLine("Has List Directory permission"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |