Ejemplo n.º 1
0
        /// <summary>
        /// Extracts the access rules from the SDDL string.
        /// </summary>
        private static string FormatSddl(IList <HttpAccessRule> accessRules)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("D:");

            for (int ii = 0; ii < accessRules.Count; ii++)
            {
                builder.Append("(");  // start of ACE
                builder.Append("A;"); // access type
                builder.Append(";");  // flags

                switch (accessRules[ii].Right)
                {
                case ApplicationAccessRight.Configure:
                {
                    builder.Append("GXGW;");      // rights
                    break;
                }

                case ApplicationAccessRight.Run:
                case ApplicationAccessRight.Update:
                {
                    builder.Append("GX;");      // rights
                    break;
                }
                }

                builder.Append(";"); // object guid
                builder.Append(";"); // inherited object guid

                string sid = ApplicationAccessRule.AccountNameToSid(accessRules[ii].IdentityName);
                builder.Append(sid);

                builder.Append(')'); // end of ace.
            }

            return(builder.ToString());
        }