Поделиться через


Функция LsaLookupSids (ntsecapi.h)

[LsaLookupSids доступен для использования в операционных системах, указанных в разделе Требования. В последующих версиях он может быть изменен или недоступен. Вместо этого используйте LsaLookupSids2.]

Функция LsaLookupSids ищет имена, соответствующие массиву идентификаторов безопасности (SID). Если LsaLookupSids не удается найти имя, соответствующее идентификатору безопасности, функция возвращает идентификатор безопасности в символьной форме.

Синтаксис

NTSTATUS LsaLookupSids(
  [in]  LSA_HANDLE                  PolicyHandle,
  [in]  ULONG                       Count,
  [in]  PSID                        *Sids,
  [out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
  [out] PLSA_TRANSLATED_NAME        *Names
);

Параметры

[in] PolicyHandle

Дескриптор объекта Policy . Этот дескриптор должен иметь право доступа POLICY_LOOKUP_NAMES. Дополнительные сведения см. в разделе Открытие дескриптора объекта политики.

[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 .

Код возврата Описание
STATUS_SOME_NOT_MAPPED
Некоторые идентификаторы безопасности не могут быть переведены. Это возвращаемое значение информационного уровня.
STATUS_SUCCESS
Все идентификаторы безопасности были найдены и успешно переведены.
 

Если функция завершается сбоем, возвращаемое значение представляет собой код NTSTATUS , который может быть одним из следующих значений или одним из возвращаемых значений функции политики LSA.

Код возврата Описание
STATUS_NONE_MAPPED
Ни один из идентификаторов безопасности не был переведен. Это возвращаемое значение уровня ошибки.
STATUS_TOO_MANY_SIDS
Параметр массива Sids был слишком большим.
 

Для преобразования кода NTSTATUS в код ошибки Windows можно использовать функцию LsaNtStatusToWinError.

Комментарии

Для идентификаторов безопасности учетных записей строка, возвращаемая в элементе Name , представляет собой изолированное имя учетной записи (например, user_name). Если требуется составное имя учетной записи (например, Acctg\user_name), получите доменное имя из буфера ReferencedDomains и добавьте обратную косую черту и изолированное имя.

Если функция LsaLookupSids не может преобразовать идентификатор безопасности, функция использует следующий алгоритм:

  1. Если домен идентификатора безопасности известен, буфер ReferencedDomains содержит запись для домена, а строка, возвращаемая в параметре Names , является представлением относительного идентификатора учетной записи (RID) в Юникоде из sid.
  2. Если домен идентификатора безопасности неизвестен, строка, возвращаемая в параметре Names , представляет собой представление всего идентификатора безопасности в Юникоде, и в буфере ReferencedDomains нет записи домена для этого идентификатора безопасности.
Помимо поиска идентификаторов безопасности для локальных учетных записей, учетных записей локального домена и явно доверенных учетных записей домена , LsaLookupSids может искать идентификаторы безопасности для любой учетной записи в любом домене в лесу Windows, включая идентификаторы безопасности, которые отображаются только в поле SIDhistory учетной записи в лесу. В поле SIDhistory хранятся бывшие идентификаторы безопасности учетной записи, которая была перемещена из другого домена. Для выполнения этих операций поиска функция запрашивает глобальный каталог леса.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header ntsecapi.h
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_NAME

LsaOpenPolicy