Функция LsaLookupNames2 (ntsecapi.h)
Функция LsaLookupNames2 извлекает идентификаторы безопасности (ИДЕНТИФИКАТОРЫ) для указанных имен учетных записей. LsaLookupNames2 может искать идентификатор безопасности для любой учетной записи в любом домене в лесу Windows.
Функция LsaLookupNames заменена функцией LsaLookupNames2 . Приложения должны использовать функцию LsaLookupNames2 для обеспечения совместимости в будущем.
Эта функция отличается от функции LsaLookupNames тем, что LsaLookupNames2 возвращает каждый идентификатор безопасности в виде одного элемента, а 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
Указывает количество имен в массиве Имен . Это также количество записей, возвращаемых в массиве Sids .
[in] Names
Указатель на массив LSA_UNICODE_STRING структур, содержащих имена для поиска. Эти строки могут быть именами учетных записей пользователей, групп или локальных групп, а также именами доменов. Доменные имена могут быть dns-именами или именами доменов NetBIOS.
Дополнительные сведения о формате строк имен см. в разделе Примечания.
[out] ReferencedDomains
Получает указатель на структуру LSA_REFERENCED_DOMAIN_LIST . Элемент Domains этой структуры — это массив, содержащий запись для каждого домена, в котором было найдено имя. Элемент DomainIndex каждой записи в массиве Sids — это индекс записи массива Domains для домена, в котором было найдено имя.
Завершив использование возвращенного указателя, освободите его, вызвав
Функция LsaFreeMemory . Эта память должна быть освобождена, даже если функция завершается сбоем с помощью любого из кодов ошибок STATUS_NONE_MAPPED или STATUS_SOME_NOT_MAPPED
[out] Sids
Получает указатель на массив LSA_TRANSLATED_SID2 структур. Каждая запись в массиве Sids содержит сведения о идентификаторе безопасности для соответствующей записи в массиве Имен .
Завершив использование возвращенного указателя, освободите его, вызвав
Функция LsaFreeMemory . Эта память должна быть освобождена, даже если функция завершается сбоем с помощью любого из кодов ошибок STATUS_NONE_MAPPED или STATUS_SOME_NOT_MAPPED
Возвращаемое значение
Если функция завершается успешно, функция возвращает одно из следующих значений NTSTATUS .
Значение | Описание |
---|---|
|
Некоторые имена не могут быть переведены. Это возвращаемое значение информационного уровня. |
|
Все имена были найдены и успешно переведены. |
Если функция завершается сбоем, возвращается следующее значение NTSTATUS или одно из возвращаемых значений функции политики LSA.
Значение | Описание |
---|---|
|
Ни одно из имен не было переведено. |
Используйте функцию LsaNtStatusToWinError для преобразования кода NTSTATUS в код ошибки Windows.
Комментарии
Используйте полные имена учетных записей (например, Имя_\пользователя домена) вместо изолированных имен (например, UserName). Полные имена являются однозначными и обеспечивают лучшую производительность при выполнении поиска. Эта функция также поддерживает полные DNS-имена (например, Example.Пример.com\Имя_пользователя) и имена субъектов-пользователей (UPN) (например, Someone@Example.com).
Преобразование изолированных имен представляет возможность конфликтов имен, так как одно и то же имя может использоваться в нескольких доменах. Функция LsaLookupNames2 использует следующий алгоритм для преобразования изолированных имен.
Перевод изолированных имен
- Если это хорошо известное имя, например Local или Interactive, функция возвращает соответствующий хорошо известный идентификатор безопасности (SID).
- Если имя является именем встроенного домена, функция возвращает идентификатор безопасности этого домена.
- Если имя является именем домена учетной записи, функция возвращает идентификатор безопасности этого домена.
- Если имя является именем основного домена, функция возвращает идентификатор безопасности этого домена.
- Если имя является одним из имен доверенного домена, функция возвращает идентификатор безопасности этого домена.
- Если имя является учетной записью пользователя, группы или локальной группы во встроенном домене, функция возвращает идентификатор безопасности этой учетной записи.
- Если имя является учетной записью пользователя, группы или локальной группы в домене учетной записи в локальной системе, функция возвращает идентификатор безопасности этой учетной записи.
- Если имя является пользователем, группой или локальной группой в основном домене, функция возвращает идентификатор безопасности этой учетной записи.
- После просмотра основного домена функция выполняет поиск в каждом из доверенных доменов основного домена.
- В противном случае имя не преобразуется.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | ntsecapi.h |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |