/// <summary>
        /// Open an alias by SID.
        /// </summary>
        /// <param name="sid">The sid for the alias.</param>
        /// <param name="desired_access">The desired access for the alias object.</param>
        /// <param name="throw_on_error">True to throw on error.</param>
        /// <returns>The SAM alias object.</returns>
        public NtResult <SamAlias> OpenAlias(Sid sid, SamAliasAccessRights desired_access, bool throw_on_error)
        {
            if (sid.SubAuthorities.Count != DomainId.SubAuthorities.Count + 1 || !sid.StartsWith(DomainId))
            {
                return(NtStatus.STATUS_NO_SUCH_DOMAIN.CreateResultFromError <SamAlias>(throw_on_error));
            }

            return(OpenAlias(sid.SubAuthorities.Last(), null, desired_access, throw_on_error));
        }