Функция LsaLookupSids2 (ntsecapi.h)
Функция LsaLookupSids2 ищет имена, которые соответствуют массиву идентификаторов безопасности (SID) и поддерживают удостоверения интернет-поставщиков. Если LsaLookupSids2 не удается найти имя, соответствующее идентификатору безопасности, функция возвращает идентификатор безопасности в символьной форме. Эту функцию следует использовать вместо функции LsaLookupSids .
Синтаксис
NTSTATUS LsaLookupSids2(
[in] LSA_HANDLE PolicyHandle,
[in] ULONG LookupOptions,
[in] ULONG Count,
[in] PSID *Sids,
[out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
[out] PLSA_TRANSLATED_NAME *Names
);
Параметры
[in] PolicyHandle
Дескриптор объекта Policy . Этот дескриптор должен иметь право доступа POLICY_LOOKUP_NAMES. Дополнительные сведения см. в разделе Открытие дескриптора объекта политики.
[in] LookupOptions
Флаги, которые изменяют поведение поиска.
[in] Count
Указывает количество идентификаторов безопасности в массиве Sids . Это также количество записей, возвращаемых в массиве Names . Это значение должно быть меньше или равно 20480.
[in] Sids
Указатель на массив указателей sid для поиска. Идентификаторы безопасности могут быть хорошо известными идентификаторами безопасности, идентификаторами безопасности пользователей, групп или локальных групп учетных записей или идентификаторами безопасности домена.
[out] ReferencedDomains
Получает указатель на указатель на структуру LSA_REFERENCED_DOMAIN_LIST . Элемент Domains этой структуры — это массив, содержащий запись для каждого домена, в котором был найден идентификатор безопасности. Запись для каждого домена содержит идентификатор безопасности и неструктурированное имя домена. Для доменов Windows неструктурированным именем является NetBIOS-имя. Для ссылок с доменами, отличными от Windows, неструктурированное имя — это идентифицируемое имя этого домена или значение NULL.
Если сведения больше не нужны, передайте возвращенный указатель в LsaFreeMemory. Эта память должна быть освобождена, даже если функция завершается сбоем с помощью любого из кодов ошибок STATUS_NONE_MAPPED или STATUS_SOME_NOT_MAPPED
[out] Names
Получает указатель на массив LSA_TRANSLATED_NAME структур. Каждая запись в массиве Names содержит сведения об имени соответствующей записи в массиве Sids . Для идентификаторов безопасности учетных записей элемент Name каждой структуры содержит изолированное имя учетной записи. Для идентификаторов безопасности домена элемент Name является недопустимым.
Элемент DomainIndex каждой записи в массиве Names — это индекс записи в массиве Domains, возвращенный в параметре ReferencedDomains . Индекс идентифицирует массив Domains для домена, в котором был найден идентификатор безопасности.
Если сведения больше не нужны, передайте возвращенный указатель в LsaFreeMemory. Эта память должна быть освобождена, даже если функция завершается сбоем с помощью любого из кодов ошибок STATUS_NONE_MAPPED или STATUS_SOME_NOT_MAPPED
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет одним из следующих значений NTSTATUS .
Код возврата | Описание |
---|---|
|
Некоторые идентификаторы безопасности не могут быть переведены. Это возвращаемое значение информационного уровня. |
|
Все идентификаторы безопасности были найдены и успешно переведены. |
Если функция завершается сбоем, возвращаемое значение представляет собой код NTSTATUS , который может быть одним из следующих значений или одним из возвращаемых значений функции политики LSA.
Код возврата | Описание |
---|---|
|
Ни один из идентификаторов безопасности не был переведен. Это возвращаемое значение уровня ошибки. |
|
Параметр массива Sids был слишком большим. |
Для преобразования кода NTSTATUS в код ошибки Windows можно использовать функцию LsaNtStatusToWinError.
Комментарии
Флаг LSA_LOOKUP_PREFER_INTERNET_NAMES следует использовать для учетных записей Интернета, таких как Учетные записи MicrosoftAccount и Azure Active Directory. Если этот флаг указан, SID-Name подстановка возвращает имя участника-пользователя учетной записи в формате MicrosoftAccount\[email protected] или AzureAD\[email protected]. Для учетных записей Майкрософт локальный ИД БЕЗОПАСНОСТИ SAM и идентификатор безопасности Интернета приводят к возврату имени участника-пользователя, если указан этот флаг. Если LSA_LOOKUP_PREFER_INTERNET_NAMES не указан, для учетных записей AAD возвращается имя стиля NT4 в формате AzureAD\foo. Имя стиля NT4 зависит от компьютера, и его использование следует тщательно оценивать и по возможности избегать. Для MicrosoftAccounts, если LSA_LOOKUP_PREFER_INTERNET_NAMES не указан, локальный идентификатор безопасности учетной записи преобразуется в локальное имя SAM, а идентификатор безопасности Интернета — в имя участника-пользователя.
Для идентификаторов безопасности учетных записей строка, возвращаемая в элементе Name , представляет собой изолированное имя учетной записи (например, user_name). Если требуется составное имя учетной записи (например, Acctg\user_name), получите доменное имя из буфера ReferencedDomains и добавьте обратную косую черту и изолированное имя.
Если функция LsaLookupSids2 не может преобразовать идентификатор безопасности, функция использует следующий алгоритм:
- Если домен идентификатора безопасности известен, буфер ReferencedDomains содержит запись для домена, а строка, возвращаемая в параметре Names , является представлением относительного идентификатора учетной записи (RID) в Юникоде из sid.
- Если домен идентификатора безопасности неизвестен, строка, возвращаемая в параметре Names , представляет собой представление всего идентификатора безопасности в Юникоде, и в буфере ReferencedDomains нет записи домена для этого идентификатора безопасности.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [только классические приложения] |
Минимальная версия сервера | Windows Server 2012 [только классические приложения] |
Целевая платформа | Windows |
Header | ntsecapi.h |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |