/// <summary>
 /// Get credentials for user from credential manager.
 /// </summary>
 /// <param name="filter">A filter for the target name, for example DOMAIN*. If null or empty returns all credentials.</param>
 /// <param name="flags">Flags for the enumeration.</param>
 /// <param name="throw_on_error">True to throw on error.</param>
 /// <returns>The list of credentials.</returns>
 public static NtResult <IEnumerable <Credential> > GetCredentials(string filter, CredentialEnumerateFlags flags, bool throw_on_error)
 {
     if (string.IsNullOrEmpty(filter))
     {
         filter = null;
     }
     return(SecurityNativeMethods.CredEnumerate(flags.HasFlagSet(CredentialEnumerateFlags.AllCredentials) ? null : filter, flags, out int count,
                                                out SafeCredBuffer buffer).CreateWin32Result(throw_on_error, () => ParseCredentials(count, buffer)));
 }