Функция LookupAccountSidA (winbase.h)

Функция LookupAccountSid принимает идентификатор безопасности (SID) в качестве входных данных. Он получает имя учетной записи для этого идентификатора безопасности и имя первого домена, в котором найден этот идентификатор безопасности.

Синтаксис

BOOL LookupAccountSidA(
  [in, optional]  LPCSTR        lpSystemName,
  [in]            PSID          Sid,
  [out, optional] LPSTR         Name,
  [in, out]       LPDWORD       cchName,
  [out, optional] LPSTR         ReferencedDomainName,
  [in, out]       LPDWORD       cchReferencedDomainName,
  [out]           PSID_NAME_USE peUse
);

Параметры

[in, optional] lpSystemName

Указатель на строку символов, завершающуюся null, которая указывает целевой компьютер. Эта строка может быть именем удаленного компьютера. Если этот параметр имеет значение NULL, преобразование имени учетной записи начинается в локальной системе. Если имя не удается разрешить в локальной системе, эта функция попытается разрешить имя с помощью контроллеров домена, доверенных локальной системой. Как правило, значение lpSystemName указывается только в том случае, если учетная запись находится в недоверенном домене и имя компьютера в этом домене известно.

[in] Sid

Указатель на ИД безопасности для поиска.

[out, optional] Name

Указатель на буфер, который получает строку, завершающуюся значением NULL, которая содержит имя учетной записи, соответствующее параметру lpSid .

[in, out] cchName

На входных данных указывает размер буфера lpName в TCHAR. Если функция завершается сбоем из-за слишком маленького буфера или если значение cchName равно нулю, cchName получает требуемый размер буфера, включая завершающий символ NULL .

[out, optional] ReferencedDomainName

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

На сервере для большинства учетных записей в базе данных безопасности локального компьютера возвращается доменное имя домена, для которого сервер является контроллером домена.

На рабочей станции доменное имя, возвращаемое для большинства учетных записей в базе данных безопасности локального компьютера, — это имя компьютера с последнего запуска системы (обратные косые черти исключаются). Если имя компьютера изменяется, старое имя продолжает возвращаться в качестве доменного имени до перезапуска системы.

Некоторые учетные записи предопределяются системой. Для этих учетных записей возвращается доменное имя BUILTIN.

[in, out] cchReferencedDomainName

Во входных данных указывает размер буфера lpReferencedDomainName в TCHAR. Если функция завершается ошибкой из-за слишком маленького буфера или если значение cchReferencedDomainName равно нулю, cchReferencedDomainName получает требуемый размер буфера, включая завершающий символ NULL .

[out] peUse

Указатель на переменную, получающую SID_NAME_USE значение, указывающее тип учетной записи.

Возвращаемое значение

Если функция выполняется успешно, функция возвращает ненулевое значение.

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

Комментарии

Функция LookupAccountSid пытается найти имя для указанного идентификатора безопасности, сначала проверив список известных идентификаторов безопасности. Если предоставленный идентификатор безопасности не соответствует хорошо известному идентификатору безопасности, функция проверяет встроенные и определяемые администратором локальные учетные записи. Затем функция проверяет основной домен. Идентификаторы безопасности , не распознанные основным доменом, проверяются на соответствие доверенным доменам, которые соответствуют их префиксам SID.

Если функции не удается найти имя учетной записи для идентификатора безопасности, GetLastError возвращает ERROR_NONE_MAPPED. Это может произойти, если время ожидания сети не позволяет функции найти имя. Это также происходит для идентификаторов безопасности без соответствующего имени учетной записи, например идентификатор безопасности входа , который идентифицирует сеанс входа.

Помимо поиска идентификаторов безопасности для локальных учетных записей, учетных записей локального домена и явно доверенных учетных записей домена , LookupAccountSid может искать идентификаторы безопасности для любой учетной записи в любом домене в лесу, включая идентификаторы безопасности, которые отображаются только в поле SIDhistory учетной записи в лесу. В поле SIDhistory хранятся бывшие идентификаторы безопасности учетной записи, которая была перемещена из другого домена. Для поиска идентификатора безопасности LookupAccountSid запрашивает глобальный каталог леса.

Примеры

Пример использования этой функции см. в разделе Поиск идентификатора безопасности в маркере доступа.

Примечание

Заголовок winbase.h определяет LookupAccountSid в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

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

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

Обзор контроль доступа

Базовые функции контроль доступа

EqualPrefixSid

LookupAccountName

SID

SID_NAME_USE