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


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

Функция CredWrite создает новые учетные данные или изменяет существующие учетные данные в наборе учетных данных пользователя. Новые учетные данные связаны с сеансом входа в текущий токен. Маркер не должен иметь идентификатор безопасности пользователя, (SID).

Синтаксис

BOOL CredWriteA(
  [in] PCREDENTIALA Credential,
  [in] DWORD        Flags
);

Параметры

[in] Credential

Указатель на структуру учетных данных для записи.

[in] Flags

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

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

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

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

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

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

Возврат кода или значения Описание
ERROR_NO_SUCH_LOGON_SESSION
Сеанс входа не существует или нет набора учетных данных, связанных с этим сеансом входа. Сеансы входа в сеть не имеют связанного набора учетных данных.
ERROR_INVALID_PARAMETER
Некоторые поля нельзя изменить в существующих учетных данных. Эта ошибка возвращается, если поле не соответствует значению в защищенном поле существующих учетных данных.
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.

Замечания

Эта функция создает учетные данные, если учетные данные с указанным TargetName и Type не существуют. Если учетные данные с указанным TargetName и Тип существуют, то новые указанные учетные данные заменяют существующий.

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

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

Заметка

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

Требования

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

См. также

CREDENTIAL