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 |