/// <summary> /// Renders the Access Control Entry as an SDDL ACE string /// </summary> /// <returns>An SDDL ACE string.</returns> public override string ToString() { var sb = new StringBuilder(); sb.AppendFormat("{0};", aceTypeStrings[(int)aceType]); for (var flag = 0x01; flag <= (int)AceFlags.AuditFailure; flag = flag << 1) { if ((flag & (int)flags) == flag) { sb.Append(aceFlagStrings[(int)Math.Log(flag, 2.0d)]); } } sb.Append(';'); foreach (var right in this) { sb.Append(rightsStrings[(int)Math.Log((int)right, 2.0d)]); } sb.Append(';'); sb.AppendFormat("{0};", objectGuid != Guid.Empty ? objectGuid.ToString() : ""); sb.AppendFormat("{0};", inheritObjectGuid != Guid.Empty ? inheritObjectGuid.ToString() : ""); if (accountSID != null) { sb.Append(accountSID.ToString()); } return(sb.ToString()); }
/// <summary> /// Renders the Security Descriptor as an SDDL string /// </summary> /// <remarks>For more info on SDDL see <a href="http://msdn.microsoft.com/library/en-us/secauthz/security/security_descriptor_string_format.asp">MSDN: Security Descriptor String Format.</a></remarks> /// <returns>An SDDL string</returns> public override string ToString() { var sb = new StringBuilder(); if (ownerSid != null) { sb.AppendFormat("O:{0}", ownerSid.ToString()); } if (groupSid != null) { sb.AppendFormat("G:{0}", groupSid.ToString()); } if (dacl != null) { sb.AppendFormat("D:{0}", dacl.ToString()); } if (sacl != null) { sb.AppendFormat("S:{0}", sacl.ToString()); } return(sb.ToString()); }