Opc.Ua.Configuration.AccountInfo.GetAccessRuleSource C# (CSharp) Method

GetAccessRuleSource() public static method

Returns the directory that is the source for the specified access rule.
public static GetAccessRuleSource ( FileInfo file, FileSystemAccessRule inheritedRule ) : DirectoryInfo
file System.IO.FileInfo
inheritedRule System.Security.AccessControl.FileSystemAccessRule
return System.IO.DirectoryInfo
        public static DirectoryInfo GetAccessRuleSource(FileInfo file, FileSystemAccessRule inheritedRule)
        {
            DirectoryInfo parent = file.Directory;

            while (parent != null)
            {                    
                DirectorySecurity security = parent.GetAccessControl(AccessControlSections.Access);

                foreach (AuthorizationRule rule in security.GetAccessRules(true, true, typeof(NTAccount)))
                {
                    if (rule.IsInherited)
                    {
                        continue;
                    }

                    if (inheritedRule.IdentityReference.Value != rule.IdentityReference.Value)
                    {
                        continue;
                    }

                    FileSystemAccessRule accessRule = rule as FileSystemAccessRule;
                    
                    if (accessRule == null)
                    {
                        continue;
                    }

                    if (accessRule.AccessControlType != inheritedRule.AccessControlType)
                    {
                        continue;
                    }

                    return parent;
                }

                parent = parent.Parent;   
            }

            return null;
        }