CredReadDomainCredentialsW 函数 (wincred.h)

CredReadDomainCredentials 函数从用户的凭据集中读取域凭据。 使用的凭据集是与当前令牌的登录会话关联的凭据集。 令牌不得禁用用户的 SID。

语法

BOOL CredReadDomainCredentialsW(
  [in]  PCREDENTIAL_TARGET_INFORMATIONW TargetInfo,
  [in]  DWORD                           Flags,
  [out] DWORD                           *Count,
  [out] PCREDENTIALW                    **Credential
);

参数

[in] TargetInfo

标识目标服务器的目标信息。 至少一个命名成员不得 NULL:NetbiosServerName、DnsServerName、NetbiosDomainName、DnsDomainName 或 DnsTreeName。

[in] Flags

控制函数操作的标志。

定义了以下标志:

CRED_CACHE_TARGET_INFORMATION

使用 CredGetTargetInfo缓存 TargetInfo 进行后续读取。

[out] Count

凭据 数组中返回的凭据计数。

[out] Credential

指向指向凭据的指针数组的指针。 返回与 targetInfo 匹配 最具体的现有凭据。 如果存在各种类型的凭据(例如,CRED_TYPE_DOMAIN_PASSWORD和CRED_TYPE_DOMAIN_CERTIFICATE凭据),则返回每种类型之一。 如果要与命名目标建立连接,将使用此最具体的凭据。

只有由 TargetInfo指定的凭据类型。返回 CredTypes 数组。 返回的 凭据 数组的排序顺序与 TargetInfo相同。CredTypes 数组。 也就是说,身份验证包通过在 TargetInfo中指定首选凭据类型。CredTypes 数组。如果 TargetInfo。CredTypeCount 为零,凭据 数组按以下排序顺序返回:

  • CRED_TYPE_DOMAIN_CERTIFICATE
  • CRED_TYPE_DOMAIN_PASSWORD

返回的缓冲区是单个分配的块。 缓冲区中包含的任何指针都是指向此单个分配块内的位置的指针。 必须通过调用 credFree调用 释放单个返回的缓冲区。

返回值

该函数返回成功 TRUE,并在失败时 FALSE。 可以调用 GetLastError 函数以获取更具体的状态代码。 可以返回以下状态代码:

  • ERROR_INVALID_PARAMETER

    未指定任何命名参数。

  • ERROR_NOT_FOUND

    没有与指定的命名参数匹配的凭据。

  • ERROR_NO_SUCH_LOGON_SESSION

    登录会话不存在,或者没有与此登录会话关联的凭据集。 网络登录会话没有关联的凭据集。

  • ERROR_INVALID_FLAGS

    标志 参数指定了无效的标志。

言论

此函数返回与命名参数匹配的最特定凭据。 例如,如果有与目标服务器名称匹配的凭据和与目标域名匹配的凭据,则仅返回特定于服务器的凭据。 这是要使用的凭据。

如果有多个匹配项,则以下列表指定返回凭据的顺序(从最具体到最不具体):

  • 凭据目标名称的格式为 <DfsRoot>\<DfsShare>,它与 TargetName完全匹配。
  • DnsServerName上的完全匹配项。
  • NetBIOSServerName上的完全匹配项。
  • TargetName的完全匹配项。
  • DnsServerName 与通配符服务器凭据 匹配。 如果多个通配符服务器凭据匹配,则使用具有较长 TargetName 的凭据。 也就是说,使用 *.example.microsoft.com 的凭据,而不是 *.microsoft.com 的凭据。
  • DnsDomainName 与 <DnsDomainName>\* 形式的通配符域凭据完全匹配。
  • NetBIOSDomainName 与 netBIOSDomainName\* 形式的通配符域凭据完全匹配
  • 名为 CRED_SESSION_WILDCARD_NAME 的凭据。
  • 名为“*”的凭据。
CredReadDomainCredentials 不同于 CredRead,因为它处理域(CRED_TYPE_DOMAIN_PASSWORD或CRED_TYPE_DOMAIN_CERTIFICATE)凭据的独有性。 域凭据包含多个目标成员。

如果 凭据 参数指定的 CREDENTIAL 结构的 Type 成员的值 CRED_TYPE_DOMAIN_EXTENDED,则必须在目标名称中指定命名空间。 此函数只能返回指定类型的一个凭据。

此函数可以返回此类型的多个凭据,但 CRED_TYPE_DOMAIN_EXTENDED 不能与 TargetInfo 参数指定的 CREDENTIAL_TARGET_INFORMATION 结构 成员 CredTypes 中的其他类型的混合。

注意

wincred.h 标头将 CredReadDomainCredentials 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows XP [仅限桌面应用]
支持的最低服务器 Windows Server 2003 [仅限桌面应用]
目标平台 窗户
标头 wincred.h
Advapi32.lib
DLL Advapi32.dll