Condividi tramite


Funzione CredReadDomainCredentialsW (wincred.h)

La funzione CredReadDomainCredentials legge le credenziali di dominio dal set di credenziali dell'utente. Il set di credenziali usato è quello associato alla sessione di accesso del token corrente. Il token non deve avere il SID dell'utente disabilitato.

Sintassi

BOOL CredReadDomainCredentialsW(
  [in]  PCREDENTIAL_TARGET_INFORMATIONW TargetInfo,
  [in]  DWORD                           Flags,
  [out] DWORD                           *Count,
  [out] PCREDENTIALW                    **Credential
);

Parametri

[in] TargetInfo

Informazioni di destinazione che identificano il server di destinazione. Almeno uno dei membri di denominazione non deve essere NULL: NetbiosServerName, DnsServerName, NetbiosDomainName, DnsDomainName o DnsTreeName.

[in] Flags

Flag che controllano l'operazione della funzione.

Viene definito il flag seguente:

CRED_CACHE_TARGET_INFORMATION

Memorizzare nella cache TargetInfo per una lettura successiva usando CredGetTargetInfo.

[out] Count

Conteggio delle credenziali restituite nella matrice credenziali .

[out] Credential

Puntatore a una matrice di puntatori alle credenziali. Vengono restituite le credenziali esistenti più specifiche corrispondenti al TargetInfo . Se esistono credenziali di vari tipi, ad esempio CRED_TYPE_DOMAIN_PASSWORD e credenziali CRED_TYPE_DOMAIN_CERTIFICATE, viene restituito uno di ogni tipo. Se si dovesse stabilire una connessione alla destinazione denominata, verrà usata questa credenziale più specifica.

Solo i tipi di credenziali specificati dall'TargetInfo. Vengono restituite le matrici CredTypes. La matrice Credentials restituita viene ordinata nello stesso ordine del TargetInfo. Matrice CredTypes. Ovvero, i pacchetti di autenticazione specificano un tipo di credenziale preferito specificandolo in precedenza nel TargetInfo. Matrice CredTypes. Se TargetInfo. CredTypeCount è zero, la matrice Credentials viene restituita nel seguente ordine ordinato:

  • CRED_TYPE_DOMAIN_CERTIFICATE
  • CRED_TYPE_DOMAIN_PASSWORD

Il buffer restituito è un singolo blocco allocato. Tutti i puntatori contenuti nel buffer sono puntatori a posizioni all'interno di questo singolo blocco allocato. Il singolo buffer restituito deve essere liberato chiamando CredFree.

Valore restituito

La funzione restituisce TRUE in caso di esito positivo e false in caso di errore. È possibile chiamare la funzione GetLastError per ottenere un codice di stato più specifico. È possibile restituire i codici di stato seguenti:

  • ERROR_INVALID_PARAMETER

    Nessuno dei parametri di denominazione è stato specificato.

  • ERROR_NOT_FOUND

    Nessuna credenziale corrispondente ai parametri di denominazione specificati.

  • ERROR_NO_SUCH_LOGON_SESSION

    La sessione di accesso non esiste o non esiste alcun set di credenziali associato a questa sessione di accesso. Le sessioni di accesso alla rete non hanno un set di credenziali associato.

  • ERROR_INVALID_FLAGS

    Flag non valido specificato per il parametro flag .

Osservazioni

Questa funzione restituisce le credenziali più specifiche corrispondenti ai parametri di denominazione. Ad esempio, se è presente una credenziale corrispondente al nome del server di destinazione e a una credenziale corrispondente al nome di dominio di destinazione, vengono restituite solo le credenziali specifiche del server. Si tratta delle credenziali che verrebbero usate.

Nell'elenco seguente viene specificato l'ordine ( dalla più specifica alla meno specifica) delle credenziali restituite se più corrispondenze:

  • Il nome della destinazione delle credenziali è del formato <DfsRoot>\<DfsShare>e corrisponde esattamente al TargetName.
  • Corrispondenza esatta nel DnsServerName.
  • Corrispondenza esatta nel NetBIOSServerName.
  • Corrispondenza esatta in TargetName.
  • Corrispondenza del DnsServerName a una credenziale del server con caratteri jolly. Se più credenziali del server con caratteri jolly corrispondono, viene usata la credenziale con il valore TargetName più lungo. Ovvero, viene usata una credenziale per *.example.microsoft.com anziché una credenziale per *.microsoft.com.
  • Corrispondenza esatta del DnsDomainName a una credenziale di dominio con caratteri jolly nel formato <DnsDomainName>\*.
  • Corrispondenza esatta del NetBIOSDomainName a credenziali di dominio con caratteri jolly nel formato <NetBIOSDomainName>\*
  • Credenziali denominate CRED_SESSION_WILDCARD_NAME.
  • Credenziali denominate "*".
CredReadDomainCredentials differisce da CredRead in quanto gestisce le idiosrasie delle credenziali di dominio (CRED_TYPE_DOMAIN_PASSWORD o CRED_TYPE_DOMAIN_CERTIFICATE). Le credenziali di dominio contengono più membri di destinazione.

Se il valore del membro Type della struttura CREDENTIAL specificata dal parametro Credentials è CRED_TYPE_DOMAIN_EXTENDED, è necessario specificare uno spazio dei nomi nel nome di destinazione. Questa funzione può restituire solo una credenziale del tipo specificato.

Questa funzione può restituire più credenziali di questo tipo, ma CRED_TYPE_DOMAIN_EXTENDED non può essere combinata con altri tipi nel membro CredTypes della struttura CREDENTIAL_TARGET_INFORMATION specificata dal parametro TargetInfo.

Nota

L'intestazione wincred.h definisce CredReadDomainCredentials come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [solo app desktop]
server minimo supportato Windows Server 2003 [solo app desktop]
piattaforma di destinazione Finestre
intestazione wincred.h
libreria Advapi32.lib
dll Advapi32.dll