Функция 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 , заданной параметром Credentials , CRED_TYPE_DOMAIN_EXTENDED, в целевом имени должно быть указано пространство имен. Эта функция может возвращать только одно удостоверение указанного типа.

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

Примечание

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

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincred.h
Библиотека Advapi32.lib
DLL Advapi32.dll