/// <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()); } }