CredUIParseUserNameA 函数 (wincred.h)

CredUIParseUserName 函数从完全限定的用户名中提取域和用户帐户名称。

语法

CREDUIAPI DWORD CredUIParseUserNameA(
  [in]  PCSTR userName,
  [out] CHAR  *user,
  [in]  ULONG userBufferSize,
  [out] CHAR  *domain,
  [in]  ULONG domainBufferSize
);

参数

[in] userName

指向 null-terminated 字符串的指针,其中包含要分析的用户名。 名称必须采用 UPN 或下层格式,或者证书。 通常,pszUserNameCredUIPromptForCredentialsCredUICmdLinePromptForCredentials接收。

[out] user

指向接收用户帐户名称的 null终止字符串的指针。

[in] userBufferSize

写入 pszUser 字符串的最大字符数,包括终止 null 字符。

注释 CREDUI_MAX_USERNAME_LENGTH 不包括终止 null 字符。
 

[out] domain

指向接收域名的 null终止字符串的指针。 如果 pszUserName 指定证书,pszDomainNULL

[in] domainBufferSize

写入 pszDomain 字符串的最大字符数,包括终止 null 字符。

注释 CREDUI_MAX_DOMAIN_TARGET_LENGTH 不包括终止 null 字符。
 

返回值

此函数返回以下内容:

  • NO_ERROR

    用户名有效。

  • ERROR_INVALID_ACCOUNT_NAME

    用户名无效。

  • ERROR_INSUFFICIENT_BUFFER

    其中一个缓冲区太小。

  • ERROR_INVALID_PARAMETER
    • ulUserMaxCharsulDomainMaxChars 为零。
    • pszUserNamepszUserpszDomain为 NULL

言论

此函数分析 CredUIPromptForCredentialsCredUICmdLinePromptForCredentials 函数返回的用户名信息,以便生成的凭据可以传递给函数(如 LogonUser),这些信息需要用户名和域作为单独的字符串。

支持以下格式:

  • <MarshalledCredentialReference>

    CredIsMarshaledCredential定义的封送凭据引用。 此类凭据在 User 参数中返回。 Domain 参数设置为空字符串。

  • <DomainName>\<UserName>

    <UserName> 在 User 参数中返回,并且返回 <DomainName> 是 Domain 参数。 如果 UserName 包含反斜杠(\),则此名称被视为具有此语法。

  • <UserName>@<DNSDomainName>

    User 参数中返回整个字符串。 Domain 参数设置为空字符串。 对于此语法,将使用字符串中的最后一个 @,因为 <UserName> 可以包含 @ 但 <DNSDomainName> 不能。

注意

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

要求

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

另请参阅

CredIsMarshaledCredential

CredUICmdLinePromptForCredentials

CredUIPromptForCredentials

LogonUser