다음을 통해 공유


LsaLookupSids 함수(ntsecapi.h)

[LsaLookupSids 는 요구 사항 섹션에 지정된 운영 체제에서 사용할 수 있습니다. 이후 버전에서는 변경되거나 제공되지 않을 수 있습니다. 대신 LsaLookupSids2를 사용합니다.]

LsaLookupSids 함수는 SID(보안 식별자) 배열에 해당하는 이름을 조회합니다. LsaLookupSids가 SID에 해당하는 이름을 찾을 수 없는 경우 함수는 문자 형식으로 SID를 반환합니다.

구문

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 배열의 SID 수를 지정합니다. 이는 Names 배열에 반환된 항목의 수이기도 합니다 . 이 값은 20480보다 작거나 같아야 합니다.

[in] Sids

조회할 SID 포인터 배열에 대한 포인터입니다. SID는 잘 알려진 SID, 사용자, 그룹 또는 로컬 그룹 계정 SID 또는 도메인 SID일 수 있습니다.

[out] ReferencedDomains

LSA_REFERENCED_DOMAIN_LIST 구조체에 대한 포인터에 대한 포인터를 받습니다. 이 구조 체의 Domains 멤버는 SID가 발견된 각 도메인에 대한 항목을 포함하는 배열입니다. 각 도메인에 대한 항목에는 도메인의 SID 및 플랫 이름이 포함됩니다. Windows 도메인의 경우 플랫 이름은 NetBIOS 이름입니다. Windows가 아닌 도메인이 있는 링크의 경우 플랫 이름은 해당 도메인의 식별 이름이거나 NULL입니다.

정보가 더 이상 필요하지 않으면 반환된 포인터를 LsaFreeMemory에 전달합니다. STATUS_NONE_MAPPED 또는 STATUS_SOME_NOT_MAPPED 오류 코드 중 하나로 인해 함수가 실패하는 경우에도 이 메모리를 해제해야 합니다 .

[out] Names

LSA_TRANSLATED_NAME 구조체 배열에 대한 포인터를 받습니다. 이름 배열의 각 항목에는 Sids 배열의 해당 항목에 대한 이름 정보가 포함됩니다. 계정 SID의 경우 각 구조체의 Name 멤버에는 계정의 격리된 이름이 포함됩니다. 도메인 SID의 경우 Name 멤버가 잘못되었습니다.

Names 배열에 있는 각 항목의 DomainIndex 멤버는 ReferencedDomains 매개 변수에 반환된 Domains 배열에 있는 항목의 인덱스입니다. 인덱스는 SID가 발견된 도메인의 도메인 배열을 식별 합니다 .

정보가 더 이상 필요하지 않으면 반환된 포인터를 LsaFreeMemory에 전달합니다. STATUS_NONE_MAPPED 또는 STATUS_SOME_NOT_MAPPED 오류 코드 중 하나로 인해 함수가 실패하는 경우에도 이 메모리를 해제해야 합니다 .

반환 값

함수가 성공하면 반환 값은 다음 NTSTATUS 값 중 하나입니다.

반환 코드 설명
STATUS_SOME_NOT_MAPPED
일부 SID를 번역할 수 없습니다. 정보 수준 반환 값입니다.
STATUS_SUCCESS
모든 SID가 발견되어 성공적으로 번역되었습니다.
 

함수가 실패하면 반환 값은 다음 값 또는 LSA 정책 함수 반환 값 중 하나일 수 있는 NTSTATUS 코드입니다.

반환 코드 설명
STATUS_NONE_MAPPED
SID 중 어느 것도 번역되지 않았습니다. 오류 수준 반환 값입니다.
STATUS_TOO_MANY_SIDS
Sids 배열 매개 변수가 너무 큽니다.
 

LsaNtStatusToWinError 함수를 사용하여 NTSTATUS 코드를 Windows 오류 코드로 변환할 수 있습니다.

설명

계정 SID의 경우 Name 멤버에 반환된 문자열은 계정의 격리된 이름(예: user_name)입니다. 계정의 복합 이름(예: Acctg\user_name)이 필요한 경우 ReferencedDomains 버퍼에서 도메인 이름을 가져와 백슬래시 및 격리된 이름을 추가합니다.

LsaLookupSids 함수가 SID를 변환할 수 없는 경우 함수는 다음 알고리즘을 사용합니다.

  1. SID의 도메인이 알려진 경우 ReferencedDomains 버퍼에는 도메인에 대한 항목이 포함되고 Names 매개 변수에 반환된 문자열은 SID에서 계정의 RID(상대 식별자)의 유니코드 표현입니다.
  2. SID의 도메인을 알 수 없는 경우 Names 매개 변수에 반환된 문자열은 전체 SID의 유니코드 표현이며 ReferencedDomains 버퍼에 이 SID에 대한 도메인 레코드가 없습니다.
LsaLookupSids는 로컬 계정, 로컬 도메인 계정 및 명시적으로 신뢰할 수 있는 도메인 계정에 대한 SID를 조회하는 것 외에도 포리스트에 있는 계정의 SIDhistory 필드에만 표시되는 SID를 포함하여 Windows 포리스트의 모든 도메인에 있는 모든 계정에 대한 SID를 조회할 수 있습니다. SIDhistory 필드는 다른 도메인에서 이동된 계정의 이전 SID를 저장합니다. 이러한 검색을 수행하기 위해 함수는 포리스트의 글로벌 카탈로그를 쿼리합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 ntsecapi.h
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_NAME

LsaOpenPolicy