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


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

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

Синтаксис

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

Параметры

[in] Credential

Указатель на записываемую структуру CREDENTIAL .

[in] Flags

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

Значение Значение
CRED_PRESERVE_CREDENTIAL_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 и Type существуют, новые указанные учетные данные заменяют существующие.

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

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

Примечание

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

Требования

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

См. также раздел

УЧЕТНЫХ ДАННЫХ