internal static extern NtStatus LsaLookupNames2( SafeLsaHandle PolicyHandle, LsaLookupNameOptionFlags Flags, int Count, UnicodeStringIn[] Names, out SafeLsaMemoryBuffer ReferencedDomains, out SafeLsaMemoryBuffer Sids // PLSA_TRANSLATED_SID );
/// <summary> /// Lookup names from the LSA policy. /// </summary> /// <param name="names">The names to lookup.</param> /// <param name="flags">Flags for the lookup.</param> /// <returns>The list of SID names.</returns> public IReadOnlyList <SidName> LookupNames(IEnumerable <string> names, LsaLookupNameOptionFlags flags) { return(LookupNames(names, flags, true).Result); }
/// <summary> /// Lookup names from the LSA policy. /// </summary> /// <param name="names">The names to lookup.</param> /// <param name="flags">Flags for the lookup.</param> /// <param name="throw_on_error">True to throw on error.</param> /// <returns>The list of SID names.</returns> public NtResult <IReadOnlyList <SidName> > LookupNames(IEnumerable <string> names, LsaLookupNameOptionFlags flags, bool throw_on_error) { UnicodeStringIn[] name_arr = names.Select(n => new UnicodeStringIn(n)).ToArray(); return(SecurityNativeMethods.LsaLookupNames2(Handle, flags, name_arr.Length, name_arr, out SafeLsaMemoryBuffer domains, out SafeLsaMemoryBuffer sids).CreateResult(throw_on_error, () => GetSidNameSids(names.ToArray(), domains, sids))); }