예제 #1
0
        /// <summary>
        /// Gets the effective right for an executable.
        /// </summary>
        private ApplicationAccessRight GetEffectiveRightForExe(FileSystemAccessRule rule)
        {
            ApplicationAccessRight effectiveRight = ApplicationAccessRight.None;

            if (rule.AccessControlType == System.Security.AccessControl.AccessControlType.Allow)
            {
                if (((EffectiveRights)rule.FileSystemRights & EffectiveRights.Run) == EffectiveRights.Run)
                {
                    effectiveRight = ApplicationAccessRight.Run;
                }

                if (((EffectiveRights)rule.FileSystemRights & EffectiveRights.Configure) == EffectiveRights.Configure)
                {
                    effectiveRight = ApplicationAccessRight.Configure;
                }
            }
            else
            {
                if (((EffectiveRights)rule.FileSystemRights & EffectiveRights.Run) != 0)
                {
                    effectiveRight = ApplicationAccessRight.Run;
                }

                if (((EffectiveRights)rule.FileSystemRights & EffectiveRights.Configure) != 0)
                {
                    effectiveRight = ApplicationAccessRight.Configure;
                }
            }

            return(effectiveRight);
        }
예제 #2
0
        /// <summary>
        /// Extracts the access rules from the SDDL string.
        /// </summary>
        private static void ParseSddl(string url, string sddl, List <HttpAccessRule> accessRules)
        {
            IList <AccessControlEntity> entities = AccessControlEntity.Parse(sddl);

            for (int ii = 0; ii < entities.Count; ii++)
            {
                AccessControlEntity entity = entities[ii];

                if (entity.AccessType != "A")
                {
                    continue;
                }

                ApplicationAccessRight rights = ApplicationAccessRight.None;

                switch (entity.Rights)
                {
                case "GA":
                case "GXGW":
                case "GWGX":
                {
                    rights = ApplicationAccessRight.Configure;
                    break;
                }

                case "GX":
                {
                    rights = ApplicationAccessRight.Run;
                    break;
                }
                }

                if (rights == ApplicationAccessRight.None)
                {
                    continue;
                }

                string accountName = ApplicationAccessRule.SidToAccountName(entity.AccountSid);

                if (String.IsNullOrEmpty(accountName))
                {
                    continue;
                }

                HttpAccessRule rule = new HttpAccessRule();

                rule.UrlPrefix    = url;
                rule.Right        = rights;
                rule.IdentityName = accountName;

                accessRules.Add(rule);
            }
        }
예제 #3
0
        /// <summary>
        /// Extracts the access rules from the SDDL string.
        /// </summary>
        private static void ParseSddl(string url, string sddl, List <HttpAccessRule> accessRules)
        {
            IList <AccessControlEntity> entities = AccessControlEntity.Parse(sddl);

            for (int ii = 0; ii < entities.Count; ii++)
            {
                AccessControlEntity entity = entities[ii];

                if (entity.AccessType != "A")
                {
                    continue;
                }

                ApplicationAccessRight rights = ApplicationAccessRight.None;

                switch (entity.Rights)
                {
                case "GA":
                case "GXGW":
                case "GWGX":
                {
                    rights = ApplicationAccessRight.Configure;
                    break;
                }

                case "GX":
                {
                    rights = ApplicationAccessRight.Run;
                    break;
                }
                }

                if (rights == ApplicationAccessRight.None)
                {
                    continue;
                }
            }
        }