コード例 #1
0
        /// <summary>
        /// Returns XML string of the finished AppLocker policy
        /// </summary>
        /// <param name="EnforcementMode">How the policy should be enforced</param>
        /// <returns>XML Text</returns>
        public string GetXml(EnforcementMode EnforcementMode = EnforcementMode.NotConfigured)
        {
            FailedRules = new List <RuleFailure>();
            XmlDocument document = new XmlDocument();

            document.LoadXml(String.Format(@"
<AppLockerPolicy Version=""1"">
    <RuleCollection Type=""Exe"" EnforcementMode=""{0}""/>
    <RuleCollection Type=""Dll"" EnforcementMode=""{0}""/>
    <RuleCollection Type=""Script"" EnforcementMode=""{0}""/>
    <RuleCollection Type=""Msi"" EnforcementMode=""{0}""/>
    <RuleCollection Type=""AppX"" EnforcementMode=""{0}""/>
</AppLockerPolicy>
", EnforcementMode.ToString()));
            foreach (RuleBase ruleItem in Rules)
            {
                ruleItem.AddToPolicy(document, this);
            }

            XmlWriterSettings settings = new XmlWriterSettings();

            settings.NewLineHandling = NewLineHandling.Replace;
            settings.NewLineChars    = "\r\n";
            settings.Indent          = true;

            using (var stringWriter = new StringWriter())
                using (var xmlTextWriter = XmlWriter.Create(stringWriter, settings))
                {
                    document.WriteTo(xmlTextWriter);
                    xmlTextWriter.Flush();
                    return(stringWriter.GetStringBuilder().ToString());
                }
        }