CREDENTIALW 结构 (wincred.h)
CREDENTIAL 结构包含单个凭据。
语法
typedef struct _CREDENTIALW {
DWORD Flags;
DWORD Type;
#if ...
wchar_t *TargetName;
#else
LPWSTR TargetName;
#endif
#if ...
wchar_t *Comment;
#else
LPWSTR Comment;
#endif
FILETIME LastWritten;
DWORD CredentialBlobSize;
LPBYTE CredentialBlob;
DWORD Persist;
DWORD AttributeCount;
PCREDENTIAL_ATTRIBUTEW Attributes;
#if ...
wchar_t *TargetAlias;
#else
LPWSTR TargetAlias;
#endif
#if ...
wchar_t *UserName;
#else
LPWSTR UserName;
#endif
} CREDENTIALW, *PCREDENTIALW;
成员
Flags
标识凭据特征的位成员。 未定义的位应初始化为零,否则不会更改以允许将来的增强。
价值 | 意义 |
---|---|
|
如果凭据不保留 CredentialBlob,并且此登录会话期间尚未写入凭据,则设置位。 在输入上忽略此位,并在查询时自动设置。
如果 CRED_TYPE_DOMAIN_CERTIFICATE类型,则不会跨登录会话保留 CredentialBlob,因为证书的 PIN 非常敏感信息。 事实上,将凭据写入凭据管理器时,PIN 将传递给与证书关联的 CSP。 CSP 将强制实施适用于证书的 PIN 保留策略。 如果 类型CRED_TYPE_DOMAIN_PASSWORD 或 CRED_TYPE_DOMAIN_CERTIFICATE,则使用标记为 CRED_FLAGS_PROMPT_NOW的凭据时,身份验证包始终会失败身份验证尝试。 应用程序(通常通过密钥环 UI)提示用户输入密码。 应用程序保存凭据并重试身份验证。 由于凭据最近已写入,因此身份验证包现在将获取未标记为CRED_FLAGS_PROMPT_NOW的凭据。 |
|
如果此凭据 TargetName 成员设置为与 UserName 成员相同的值,则设置位。 此类凭据旨在存储特定用户的 CredentialBlob。 有关详细信息,请参阅 CredMarshalCredential 函数。
仅当 类型CRED_TYPE_DOMAIN_PASSWORD 或 CRED_TYPE_DOMAIN_CERTIFICATE时,才能指定此位。 |
Type
凭据的类型。 创建凭据后,无法更改此成员。 以下值有效。
TargetName
凭据的名称。 TargetName 和 类型 成员唯一标识凭据。 创建凭据后,无法更改此成员。 应删除具有旧名称的凭据,并删除具有新名称的凭据。
如果 类型CRED_TYPE_DOMAIN_PASSWORD 或 CRED_TYPE_DOMAIN_CERTIFICATE,则此成员标识要用于凭据的服务器或服务器。 该成员是 NetBIOS 或 DNS 服务器名称、包含通配符的 DNS 主机名后缀、包含通配符序列或星号的 NetBIOS 或 DNS 域名。
如果 TargetName 是 DNS 主机名,则 TargetAlias 成员可以是主机的 NetBIOS 名称。
如果 TargetName 是包含通配符的 DNS 主机名后缀,则 DNS 主机名的最左侧标签是星号 \,表示目标名称是名称以指定名称结尾的任何服务器,例如 *.microsoft.com。
如果 TargetName 是包含通配符序列的域名,则语法是域名后跟反斜杠和星号(\*),表示目标名称是属于命名域(或领域)成员的任何服务器。
如果 TargetName 是包含通配符序列的 DNS 域名,则 TargetAlias 成员可以是对同一域使用通配符序列的 NetBIOS 域名。
如果 TargetName 指定 DFS 共享,例如,DfsRoot\DfsShare,则此凭据与通过该 DFS 共享访问的特定 DFS 共享和任何服务器匹配。
如果 TargetName 是单个星号 {,则此凭据与任何服务器名称匹配。
如果 TargetName CRED_SESSION_WILDCARD_NAME,则此凭据与任何服务器名称匹配。 此凭据在单个星号之前匹配,并且仅在 持久化CRED_PERSIST_SESSION时有效。 凭据可由想要暂时替代默认凭据的应用程序设置。
此成员不能超过 CRED_MAX_DOMAIN_TARGET_NAME_LENGTH(337)个字符。
如果CRED_TYPE_GENERIC 类型,则此成员应标识除实际目标外使用凭据的服务。 Microsoft建议名称以实现服务的公司名称为前缀。 Microsoft将使用前缀“Microsoft”。 由Microsoft编写的服务应追加其服务名称,例如 Microsoft_RAS_TargetName。 此成员不能超过 CRED_MAX_GENERIC_TARGET_NAME_LENGTH(32767) 个字符。
此成员不区分大小写。
Comment
描述此凭据的用户的字符串注释。 此成员不能超过 CRED_MAX_STRING_LENGTH (256) 个字符。
LastWritten
在协调世界时(格林威治平均时间),上次修改凭据的时间。 对于写入操作,将忽略此成员的值。
CredentialBlobSize
CredentialBlob 成员的大小(以字节为单位)。 此成员不能大于 CRED_MAX_CREDENTIAL_BLOB_SIZE(5*512)字节。
CredentialBlob
凭据的机密数据。 CredentialBlob 成员可以读取和写入。
如果 CRED_TYPE_DOMAIN_PASSWORD类型 成员,则此成员包含 UserName的纯文本 Unicode 密码。 CredentialBlob 和 CredentialBlobSize 成员不包含尾随零字符。 此外,对于 CRED_TYPE_DOMAIN_PASSWORD,此成员只能由身份验证包读取。
如果 CRED_TYPE_DOMAIN_CERTIFICATE类型 成员,则此成员包含 UserName的明文测试 Unicode PIN。 CredentialBlob 和 CredentialBlobSize 成员不包含尾随零字符。 此外,此成员只能由身份验证包读取。
如果 类型 成员 CRED_TYPE_GENERIC,则此成员由应用程序定义。
凭据应可移植。 应用程序应确保 CredentialBlob 中的数据可移植。 应用程序定义 CredentialBlob中数据的字节尾和对齐方式。
Persist
定义此凭据的持久性。 此成员可以读取和写入。
AttributeCount
要与凭据关联的应用程序定义属性的数目。 此成员可以读取和写入。 其值不能大于 CRED_MAX_ATTRIBUTES(64)。
Attributes
与凭据关联的应用程序定义属性。 此成员可以读取和写入。
TargetAlias
TargetName 成员的别名。 此成员可以读取和写入。 长度不能超过 CRED_MAX_STRING_LENGTH (256) 个字符。
如果凭据 类型CRED_TYPE_GENERIC,则此成员可以是非NULL,但凭据管理器将忽略该成员。
UserName
用于连接到 TargetName的帐户的用户名。
如果凭据 类型CRED_TYPE_DOMAIN_PASSWORD,则此成员可以是 DomainName\UserName 或 UPN。
如果凭据 类型CRED_TYPE_DOMAIN_CERTIFICATE,则此成员必须是使用 CertCredential 调用 CredMarshalCredential 创建的封送证书引用。
如果凭据 类型CRED_TYPE_GENERIC,则此成员可以是非NULL,但凭据管理器将忽略该成员。
此成员不能超过 CRED_MAX_USERNAME_LENGTH(513)个字符。
言论
注意
wincred.h 标头将 CREDENTIAL 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [仅限桌面应用] |
支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | wincred.h |