CredWriteDomainCredentialsW 函数 (wincred.h)
CredWriteDomainCredentials 函数将域凭据写入用户的凭据集。 使用的凭据集是与当前令牌的登录会话关联的凭据集。 令牌不得禁用用户的 SID。
语法
BOOL CredWriteDomainCredentialsW(
[in] PCREDENTIAL_TARGET_INFORMATIONW TargetInfo,
[in] PCREDENTIALW Credential,
[in] DWORD Flags
);
参数
[in] TargetInfo
标识目标服务器。 至少有一个命名成员必须是非NULL,并且可以 NetbiosServerName、DnsServerName、NetbiosDomainName、DnsDomainName或 DnsTreeName。
[in] Credential
要写入的凭据。
凭据必须是与 TargetInfo
[in] Flags
用于控制 API 操作的标志。 定义了以下标志。
价值 | 意义 |
---|---|
|
凭据 BLOB 应保留与已存在的凭据具有相同的凭据名称和凭据类型。 传入 凭据 结构的 CredentialBlobSize 必须为零。 |
返回值
如果函数成功,该函数将返回 true
如果该函数失败,则返回 FALSE。 调用 GetLastError 函数以获取更具体的状态代码。 可以返回以下状态代码。
编写CRED_TYPE_CERTIFICATE凭据时,可以返回其他智能卡错误。
返回代码 | 描述 |
---|---|
|
一个或多个参数无效。 未指定任何命名参数,或者指定的凭据未将 |
|
登录会话不存在,或者没有与此登录会话关联的凭据集。 网络登录会话没有关联的凭据集。 |
|
为 标志 参数指定了无效的值。 |
|
传入 凭据 结构的 UserName 成员无效。 有关有效语法的说明,请参阅该成员的定义。 |
|
CRED_PRESERVE_CREDENTIAL_BLOB已指定,并且没有同一 TargetName 和 类型的现有凭据。 |
|
要写入的CRED_TYPE_CERTIFICATE凭据需要智能卡读卡器可用。 |
|
要写入的凭据需要插入智能卡。 |
|
为写入的CRED_TYPE_CERTIFICATE凭据提供了错误的 PIN。 |
言论
当此函数写入CRED_TYPE_CERTIFICATE凭据时,Credential->CredentialBlob 成员指定保护由 Credential指定的证书的私钥的 PIN ->UserName。 凭据管理器不维护 PIN。 相反,PIN 会传递到证书的 CSP,供 CSP 和身份验证包稍后使用。 CSP 定义 PIN 的生存期。 例如,大多数 CSP 在智能卡删除时刷新 PIN。
CredWriteDomainCredentials 不同于 CredWrite,因为它处理域(CRED_TYPE_DOMAIN_PASSWORD或CRED_TYPE_DOMAIN_CERTIFICATE)凭据的独有性。 域凭据包含多个目标成员。
如果 Credential 参数指定的 CREDENTIAL 结构的 Type 成员的值 CRED_TYPE_DOMAIN_EXTENDED,则必须在目标名称中指定命名空间。
注意
wincred.h 标头将 CredWriteDomainCredentials 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [仅限桌面应用] |
支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | 窗户 |
标头 | wincred.h |
库 | Advapi32.lib |
DLL | Advapi32.dll |