private List <string> WalkACL(CommonAcl acl, bool translateSid = true) { List <String> ret = new List <string> { }; foreach (Object oACE in acl) { if (oACE.GetType().Name == "CommonAce") { CommonAce oReadAce = (CommonAce)oACE; ret.AddFormatted("\t\t\tType: <{0}> Flags: <{1}>", oReadAce.AceType, oReadAce.AceFlags); ret.AddFormatted("\t\t\tTrustee: <{0}>", DecodeSID(oReadAce.SecurityIdentifier, translateSid)); ret.AddFormatted("\t\t\t AccessMask: <{0}> ({1})", DecodeAccessMask(oReadAce.AccessMask), oReadAce.IsInherited ? "inherited right" : "direct right"); ret.AddFormatted("\t\t\t inheritance: <{0}> propagation: <{1}>", oReadAce.InheritanceFlags, oReadAce.PropagationFlags); } else if (oACE.GetType().Name == "ObjectAce") { ObjectAce oReadAce = (ObjectAce)oACE; ret.AddFormatted("\t\t\tType: <{0}> Flags: <{1}>", oReadAce.AceType, oReadAce.AceFlags); ret.AddFormatted("\t\t\tTrustee: <{0}>", DecodeSID(oReadAce.SecurityIdentifier, translateSid)); ret.AddFormatted("\t\t\t AccessMask: <{0}> ({1})", DecodeAccessMask(oReadAce.AccessMask), oReadAce.IsInherited ? "inherited right" : "direct right"); ret.AddRange(DecodeOIDs(oReadAce)); ret.AddFormatted("\t\t\t inheritance: <{0}> propagation: <{1}>", oReadAce.InheritanceFlags, oReadAce.PropagationFlags); } ret.AddFormatted("\t\t\t{0}", new string('-', 60)); } return(ret); }
private string[] ConvertAccessControlListToStrings(CommonAcl acl, AccessRightTypeNames?typeName) { if (acl == null || acl.Count == 0) { return(Array.Empty <string>()); } List <string> aceStringList = new List <string>(acl.Count); foreach (CommonAce ace in acl) { StringBuilder aceString = new StringBuilder(); string ntAccount = ConvertToNTAccount(ace.SecurityIdentifier); aceString.Append($"{ntAccount}: {ace.AceQualifier}"); if (ace.AceFlags != AceFlags.None) { aceString.Append($" {ace.AceFlags}"); } List <string> accessRightList = GetApplicableAccessRights(ace.AccessMask, typeName); if (accessRightList.Count > 0) { string accessRights = String.Join(", ", accessRightList); aceString.Append($" ({accessRights})"); } aceStringList.Add(aceString.ToString()); } return(aceStringList.ToArray()); }
internal static bool IsVM() { return(CommonAcl.SecurityDocumentElement()); }