SecLookupAccountName 函数 (ntifs.h)
SecLookupAccountName 接受帐户作为输入,并检索帐户的安全标识符(SID),以及找到帐户的域的名称。
语法
KSECDDDECLSPEC NTSTATUS SEC_ENTRY SecLookupAccountName(
[in] PUNICODE_STRING Name,
[in, out] PULONG SidSize,
[out] PSID Sid,
[out] PSID_NAME_USE NameUse,
[out] PULONG DomainSize,
[in_out, optional] PUNICODE_STRING ReferencedDomain
);
参数
[in] Name
指向指定帐户名称的 Unicode 字符串的指针。 使用 domain_name\user_name 格式的完全限定字符串来确保 SecLookupAccountName 在所需域中查找帐户。
[in, out] SidSize
指向指定 Sid 缓冲区大小的变量的指针。 在输入时,此值指定输入 Sid 缓冲区的大小(以字节为单位)。 如果函数由于缓冲区太小或 SidSize 为零而失败,则此变量将接收所需的缓冲区大小。 成功后,此变量包含返回 Sid的大小。
[out] Sid
指向接收与 Name 参数所指向的帐户名称对应的 SID 结构的缓冲区的指针。 如果此参数 NULL,SidSize 必须为零。
[out] NameUse
指向接收帐户类型的 SID_NAME_USE 枚举类型的指针。
[out] DomainSize
指向接收 ReferencedDomain 参数大小的 ULONG 的指针。 如果函数由于缓冲区太小而失败,则此变量将接收所需的缓冲区大小。 如果 input ReferencedDomain 参数为 NULL,则此参数将接收零。
[in_out, optional] ReferencedDomain
指向找到帐户名称的域名称的缓冲区的指针。 此参数是可选的,可以是 NULL。 对于未加入域的计算机,此缓冲区接收计算机名称。
返回值
SecLookupAccountName 在成功或失败时返回以下错误代码之一STATUS_SUCCESS。
返回代码 | 描述 |
---|---|
SEC_E_INTERNAL_ERROR | 尝试连接到本地系统机构(LSA)或本地过程调用(LPC)时发生内部错误,安全提供程序失败。 |
STATUS_ACCESS_DENIED | 与当前正在执行的线程关联的进程 ID 与当前进程 ID 不匹配。 |
STATUS_BUFFER_TOO_SMALL | Sid 或 ReferencedDomain 参数的缓冲区大小太小。 |
STATUS_INVALID_PARAMETER | Name 参数的长度超过了向本地系统机构发送的消息中允许的长度。 |
STATUS_NONE_MAPPED | 找不到 Name 参数。 |
STATUS_PROCESS_IS_TERMINATING | 此过程已终止,因此无法建立本地过程调用 (LPC) 连接。 |
言论
SecLookupAccountName 尝试查找指定名称的 SID。 该函数检查内置和管理定义的本地帐户。 接下来,该函数检查主域。 如果未找到该名称,则会检查受信任的域。
使用完全限定的帐户名称(例如,domain_name\user_name),而不是独立名称(例如,user_name)。 完全限定的名称是明确的,在执行查找时提供更好的性能。 此函数还支持完全限定的 DNS 名称(例如,example.example.com\user_name)和用户主体名称(例如,someone@example.com)。
除了查找本地帐户、本地域帐户和显式受信任的域帐户之外,SecLookupAccountName 还可以查找林中任何域中的任何帐户的名称。
SecLookupAccountName 等效于 Win32 LookupAccountName 函数。
SecLookupAccountName 由 ksecdd 驱动程序导出,该驱动程序使用用户模式帮助程序服务实现此函数。 因此,在文件系统中使用此函数必须遵循与用户模式服务通信的常规规则。 SecLookupAccountName 在分页文件 I/O 期间无法使用。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP |
目标平台 | 普遍 |
标头 | ntifs.h (include Ntifs.h) |
库 | Ksecdd.lib |
IRQL | <= APC_LEVEL |