Поделиться через


Функция CredReadDomainCredentialsA (wincred.h)

Функция CredReadDomainCredentials считывает учетные данные домена из набора учетных данных пользователя. Используемый набор учетных данных связан с сеансом входа в текущий токен. Маркер не должен отключить идентификатор безопасности пользователя.

Синтаксис

BOOL CredReadDomainCredentialsA(
  [in]  PCREDENTIAL_TARGET_INFORMATIONA TargetInfo,
  [in]  DWORD                           Flags,
  [out] DWORD                           *Count,
  [out] PCREDENTIALA                    **Credential
);

Параметры

[in] TargetInfo

Целевые сведения, определяющие целевой сервер. Хотя бы один из элементов именования не должен быть NULL: NetbiosServerName, DnsServerName, NetbiosDomainName, DnsDomainName или DnsTreeName.

[in] Flags

Флаги, управляющие операцией функции.

Определен следующий флаг:

CRED_CACHE_TARGET_INFORMATION

Кэшируйте TargetInfo для последующего чтения с помощью CredGetTargetInfo.

[out] Count

Количество учетных данных, возвращаемых в массиве Учетные данные.

[out] Credential

Указатель на массив указателей на учетные данные. Возвращается наиболее конкретные существующие учетные данные, соответствующие TargetInfo. Если существуют учетные данные различных типов (например, CRED_TYPE_DOMAIN_PASSWORD и CRED_TYPE_DOMAIN_CERTIFICATE учетных данных), возвращается один из типов. Если подключение должно быть сделано с именованным целевым объектом, будут использоваться эти самые конкретные учетные данные.

Только эти типы учетных данных, указанныеTargetInfo . Возвращается массив CredTypes. Возвращенный массив учетных данных сортируется в том же порядке, что и TargetInfo. Массив CredTypes. То есть пакеты проверки подлинности указывают предпочтительный тип учетных данных, указав его ранее в TargetInfo. Массив CredTypes. Если TargetInfo. CredTypeCount равно нулю, массив учетных данных возвращается в следующем отсортированного порядке:

  • CRED_TYPE_DOMAIN_CERTIFICATE
  • CRED_TYPE_DOMAIN_PASSWORD

Возвращаемый буфер является одним выделенным блоком. Все указатели, содержащиеся в буфере, являются указателями на расположения в этом отдельном блоке. Один возвращаемый буфер должен быть освобожден путем вызова CredFree.

Возвращаемое значение

Функция возвращает TRUE при успешном выполнении и false при сбое. Функцию getLastError можно вызвать , чтобы получить более конкретный код состояния. Можно вернуть следующие коды состояния:

  • ERROR_INVALID_PARAMETER

    Ни один из параметров именования не указан.

  • ERROR_NOT_FOUND

    Учетные данные не соответствуют указанным параметрам именования.

  • ERROR_NO_SUCH_LOGON_SESSION

    Сеанс входа не существует или нет набора учетных данных, связанных с этим сеансом входа. Сеансы входа в сеть не имеют связанного набора учетных данных.

  • ERROR_INVALID_FLAGS

    Недопустимый флаг был указан для параметра Flags.

Замечания

Эта функция возвращает наиболее конкретные учетные данные, соответствующие параметрам именования. Например, если есть учетные данные, соответствующие имени целевого сервера и учетным данным, соответствующим целевому домену, возвращаются только определенные учетные данные сервера. Это учетные данные, которые будут использоваться.

В следующем списке указывается порядок (от наиболее конкретного до наименее конкретного) того, какие учетные данные возвращаются при наличии нескольких совпадений:

  • Имя целевого объекта учетных данных — это форма <DfsRoot>\<DfsShare>, и это точное совпадение в TargetName.
  • Точное совпадение DnsServerName.
  • Точное совпадение для NetBIOSServerName.
  • Точное совпадение TargetName.
  • Совпадение DnsServerName с учетными данными сервера подстановочных знаков. Если совпадает несколько учетных данных сервера подстановочных знаков, используется учетные данные с более длинным именем targetName. То есть учетные данные для *.example.microsoft.com используются вместо учетных данных для *.microsoft.com.
  • Точное совпадение DnsDomainName с учетными данными домена подстановочного знака формы <DnsDomainName>\*.
  • Точное совпадение NetBIOSDomainName с учетными данными домена подстановочного знака формы <NetBIOSDomainName>\*
  • Учетные данные с именем CRED_SESSION_WILDCARD_NAME.
  • Учетные данные с именем "*".
CredReadDomainCredentials отличается от CredRead в том, что он обрабатывает учетные данные домена (CRED_TYPE_DOMAIN_PASSWORD или CRED_TYPE_DOMAIN_CERTIFICATE). Учетные данные домена содержат несколько целевых элементов.

Если значение элемента type структуры CREDENTIAL, указанной параметром учетных данных , CRED_TYPE_DOMAIN_EXTENDED, необходимо указать пространство имен в целевом имени. Эта функция может возвращать только одну учетные данные указанного типа.

Эта функция может возвращать несколько учетных данных этого типа, но CRED_TYPE_DOMAIN_EXTENDED нельзя смешать с другими типами в CredTypes элемент структуры CREDENTIAL_TARGET_INFORMATION, указанной параметром TargetInfo.

Заметка

Заголовок wincred.h определяет CredReadDomainCredentials в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка wincred.h
библиотеки Advapi32.lib
DLL Advapi32.dll