LsaLookupNames2 函数 (ntsecapi.h)
LsaLookupNames2 函数检索指定帐户名称) SID (安全标识符。 LsaLookupNames2 可以查找 Windows 林中任何域中任何帐户的 SID。
LsaLookupNames 函数被 LsaLookupNames2 函数取代。 应用程序应使用 LsaLookupNames2 函数来确保将来的兼容性。
此函数与 LsaLookupNames 函数的不同之处在于 ,LsaLookupNames2 将每个 SID 作为单个元素返回,而 LsaLookupNames 将每个 SID 划分为 RID/域对。
语法
NTSTATUS LsaLookupNames2(
[in] LSA_HANDLE PolicyHandle,
[in] ULONG Flags,
[in] ULONG Count,
[in] PLSA_UNICODE_STRING Names,
[out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
[out] PLSA_TRANSLATED_SID2 *Sids
);
参数
[in] PolicyHandle
Policy 对象的句柄。 句柄必须具有POLICY_LOOKUP_NAMES访问权限。 有关详细信息,请参阅 打开策略对象句柄。
[in] Flags
控制此函数行为的值。 当前定义了以下值。
值 | 含义 |
---|---|
|
函数仅在本地系统上搜索未指定域的名称。 函数在远程系统上搜索指定域的名称。 |
[in] Count
指定 Names 数组中的名称数。 这也是 Sids 数组中返回的条目数。
[in] Names
指向包含要查找的名称的 LSA_UNICODE_STRING 结构的数组的指针。 这些字符串可以是用户、组或本地组帐户的名称,也可以是域的名称。 域名可以是 DNS 域名或 NetBIOS 域名。
有关名称字符串格式的详细信息,请参阅备注。
[out] ReferencedDomains
接收指向 LSA_REFERENCED_DOMAIN_LIST 结构的指针。 此结构的 Domains 成员是一个数组,其中包含在其中找到名称的每个域的条目。 Sids 数组中每个条目的 DomainIndex 成员是在其中找到名称的域的 Domains 数组条目的索引。
使用完返回的指针后,通过调用
LsaFreeMemory 函数。 即使函数失败并出现错误代码STATUS_NONE_MAPPED或STATUS_SOME_NOT_MAPPED,也必须释放此内存
[out] Sids
接收指向LSA_TRANSLATED_SID2结构的数组 的 指针。 Sids 数组中的每个条目都包含 Names 数组中相应条目的 SID 信息。
使用完返回的指针后,通过调用
LsaFreeMemory 函数。 即使函数失败并出现错误代码STATUS_NONE_MAPPED或STATUS_SOME_NOT_MAPPED,也必须释放此内存
返回值
如果函数成功,该函数将返回以下 NTSTATUS 值之一。
值 | 说明 |
---|---|
|
某些名称无法翻译。 这是一个信息级返回值。 |
|
所有名称都已找到并成功翻译。 |
如果函数失败,则返回值为以下 NTSTATUS 值或 LSA 策略函数返回值之一。
值 | 说明 |
---|---|
|
没有翻译任何名称。 |
使用 LsaNtStatusToWinError 函数将 NTSTATUS 代码转换为 Windows 错误代码。
注解
使用完全限定的帐户名 (例如 DomainName\UserName) ,而不是 (独立名称,例如 UserName) 。 完全限定的名称是明确的,在执行查找时提供更好的性能。 此函数还支持 (完全限定的 DNS 名称,例如 Example。例如.com\UserName) 和 用户主体名称 (UPN) (例如 Someone@Example.com) 。
独立名称的转换引入了名称冲突的可能性,因为同一名称可能在多个域中使用。 LsaLookupNames2 函数使用以下算法来转换独立名称。
转换独立名称
- 如果名称是已知名称(如 Local 或 Interactive),则函数将返回相应的已知 安全标识符 (SID) 。
- 如果该名称是内置域的名称,则函数将返回该域的 SID。
- 如果该名称是帐户域的名称,则函数返回该域的 SID。
- 如果该名称是主域的名称,则函数将返回该域的 SID。
- 如果该名称是受信任域的名称之一,则函数将返回该域的 SID。
- 如果名称是内置域中的用户、组或本地组帐户,则函数将返回该帐户的 SID。
- 如果名称是本地系统上帐户域中的用户、组或本地组帐户,则函数将返回该帐户的 SID。
- 如果名称是主域中的用户、组或本地组,则函数将返回该帐户的 SID。
- 在主域中查找后, 函数将查找每个主域的受信任域。
- 否则,不会转换名称。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | ntsecapi.h |
Library | Advapi32.lib |
DLL | Advapi32.dll |