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


Функция 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
BLOB-объект учетных данных должен быть сохранен из уже существующих учетных данных с тем же именем учетных данных и типом учетных данных. CredentialBlobSize переданной в структуре учетных данных должно быть равно нулю.

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

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

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

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

Возвращаемый код Описание
ERROR_INVALID_PARAMETER
Один или несколько параметров недопустимы. Ни один из параметров именования не указан, либо указанные учетные данные не имеют элемента типа для 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,учетных данных CredentialBlob указывает ПИН-код, который защищает закрытый ключ сертификата, указанногоучетных данных userName. Диспетчер учетных данных не поддерживает ПИН-код. Скорее, ПИН-код передается в CSP сертификата для последующего использования пакетами CSP и аутентификации. Поставщик служб CSP определяет время существования ПИН-кода. Например, большинство поставщиков csps сбрасывают ПИН-код при удалении смарт-карты.

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

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

Заметка

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

Требования

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