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


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

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

Синтаксис

BOOL CredWriteDomainCredentialsA(
  [in] PCREDENTIAL_TARGET_INFORMATIONA TargetInfo,
  [in] PCREDENTIALA                    Credential,
  [in] DWORD                           Flags
);

Параметры

[in] TargetInfo

Идентифицирует целевой сервер. По крайней мере один из элементов именования должен быть не равен NULL и может иметь значение NetbiosServerName, DnsServerName, NetbiosDomainName, DnsDomainName или DnsTreeName.

[in] Credential

Записываемые учетные данные.

Учетные данные должны совпадать с TargetInfo . Например, если TargetName является DNS-именем с подстановочными знаками, то элемент TargetName учетных данных должен быть постфиксом элемента DnsServerName из TargetInfo.

[in] Flags

Флаги для управления работой API. Определен следующий флаг.

Значение Значение
CRED_PRESERVE_CREDENTIAL_BLOB
Большой двоичный объект учетных данных должен быть сохранен из уже существующих учетных данных с тем же именем и типом учетных данных. CredentialBlobSize переданной в структуре учетных данных должен быть равен нулю.

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

Если функция выполнена успешно, функция возвращает значение TRUE.

Если функция завершается сбоем, она возвращает значение FALSE. Вызовите функцию GetLastError , чтобы получить более конкретный код состояния. Можно вернуть следующие коды состояния.

При записи учетных данных CRED_TYPE_CERTIFICATE могут быть возвращены другие ошибки смарт-карта.

Код возврата Описание
ERROR_INVALID_PARAMETER
Один или несколько параметров недопустимы. Либо ни один из параметров именования не был указан, либо указанные учетные данные не имеют элемента Type , заданного как CRED_TYPE_DOMAIN_PASSWORD или CRED_TYPE_DOMAIN_CERTIFICATE, либо учетные данные не соответствуют TargetInfo.
ERROR_NO_SUCH_LOGON_SESSION
Сеанс входа не существует или с этим сеансом входа не связан набор учетных данных. Сеансы входа в сеть не имеют связанного набора учетных данных.
ERROR_INVALID_FLAGS
Недопустимое значение было указано для параметра Flags .
ERROR_BAD_USERNAME
Недопустимый элемент UserName переданной структуры учетных данных . Описание допустимых синтаксисов см. в определении этого элемента.
ERROR_NOT_FOUND
CRED_PRESERVE_CREDENTIAL_BLOB указано, и отсутствуют существующие учетные данные с одинаковыми значениями TargetName и Type.
SCARD_E_NO_READERS_AVAILABLE
Записываемые учетные данные CRED_TYPE_CERTIFICATE требуют наличия средства чтения смарт-карта.
SCARD_E_NO_SMARTCARD или SCARD_W_REMOVED_CARD: CRED_TYPE_CERTIFICATE
Для записи учетных данных требуется вставить смарт-карта.
SCARD_W_WRONG_CHV
Для записываемых учетных данных CRED_TYPE_CERTIFICATE указан неправильный ПИН-код.

Комментарии

Когда эта функция записывает учетные данные CRED_TYPE_CERTIFICATE, член Credential-CredentialBlob> задает ПИН-код, который защищает закрытый ключ сертификата, указанного в credential-UserName>. Диспетчер учетных данных не поддерживает ПИН-код. Вместо этого ПИН-код передается поставщику CSP сертификата для последующего использования CSP и пакетами проверки подлинности. Поставщик служб конфигурации определяет время существования ПИН-кода. Например, большинство поставщиков служб конфигурации сбрасывают ПИН-код после удаления смарт-карта.

CredWriteDomainCredentials отличается от CredWrite тем, что обрабатывает идентификаторы учетных данных домена (CRED_TYPE_DOMAIN_PASSWORD или CRED_TYPE_DOMAIN_CERTIFICATE). Учетные данные домена содержат более одного целевого члена.

Если значение элемента Type структуры CREDENTIAL , указанной параметром Credential , CRED_TYPE_DOMAIN_EXTENDED, в целевом имени должно быть указано пространство имен.

Примечание

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

Требования

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