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 结尾的字符串的指针。 名称必须采用 UPN 或下级格式,或证书。 通常, pszUserName 是从 CredUIPromptForCredentialsCredUICmdLinePromptForCredentials 接收的

[out] user

指向接收用户帐户名称的 以 null 结尾的字符串的指针。

[in] userBufferSize

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

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

[out] domain

指向接收域名的 以 null 结尾的字符串的指针。 如果 pszUserName 指定证书, pszDomain 将为 NULL

[in] domainBufferSize

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

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

返回值

此函数返回以下内容:

  • NO_ERROR

    用户名有效。

  • ERROR_INVALID_ACCOUNT_NAME

    用户名无效。

  • ERROR_INSUFFICIENT_BUFFER

    其中一个缓冲区太小。

  • ERROR_INVALID_PARAMETER
    • ulUserMaxCharsulDomainMaxChars 为零。
    • pszUserNamepszUserpszDomainNULL

注解

此函数分析 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 [仅限桌面应用]
目标平台 Windows
标头 wincred.h
Library Credui.lib
DLL Credui.dll

另请参阅

CredIsMarshaledCredential

CredUICmdLinePromptForCredentials

CredUIPromptForCredentials

LogonUser