LsaLookupNames2 함수(ntsecapi.h)

LsaLookupNames2 함수는 지정된 계정 이름에 대한 SID(보안 식별자)를 검색합니다. LsaLookupNames2 는 Windows 포리스트의 모든 도메인에 있는 모든 계정에 대한 SID를 조회할 수 있습니다.

LsaLookupNames 함수는 LsaLookupNames2 함수로 대체됩니다. 애플리케이션은 향후 호환성을 보장하기 위해 LsaLookupNames2 함수를 사용해야 합니다.

이 함수는 LsaLookupNames2가 각 SID를 단일 요소로 반환하는 반면 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

이 함수의 동작을 제어하는 값입니다. 현재 다음 값이 정의되어 있습니다.

의미
LSA_LOOKUP_ISOLATED_AS_LOCAL
0x80000000
함수는 도메인을 지정하지 않는 이름을 로컬 시스템에서만 검색합니다. 함수는 원격 시스템에서 도메인을 지정하는 이름을 검색합니다.

[in] Count

Names 배열의 이름 수를 지정합니다. Sids 배열에서 반환되는 항목의 수이기도 합니다 .

[in] Names

조회할 이름을 포함하는 LSA_UNICODE_STRING 구조체의 배열에 대한 포인터입니다. 이러한 문자열은 사용자, 그룹 또는 로컬 그룹 계정의 이름 또는 도메인 이름일 수 있습니다. 도메인 이름은 DNS 도메인 이름 또는 NetBIOS 도메인 이름일 수 있습니다.

이름 문자열의 형식에 대한 자세한 내용은 비고를 참조하세요.

[out] ReferencedDomains

LSA_REFERENCED_DOMAIN_LIST 구조체에 대한 포인터를 받습니다. 이 구조 체의 Domains 멤버는 이름이 발견된 각 도메인에 대한 항목을 포함하는 배열입니다. Sids 배열에 있는 각 항목의 DomainIndex 멤버는 이름이 발견된 도메인에 대한 Domains 배열 항목의 인덱스입니다.

반환된 포인터 사용을 마쳤으면 를 호출하여 해제합니다.
LsaFreeMemory 함수입니다 . STATUS_NONE_MAPPED 또는 STATUS_SOME_NOT_MAPPED 오류 코드 중 하나로 인해 함수가 실패하는 경우에도 이 메모리를 해제해야 합니다 .

[out] Sids

LSA_TRANSLATED_SID2 구조체 배열에 대한 포인터를 받습니다. Sids 배열의 각 항목에는 이름 배열의 해당 항목에 대한 SID 정보가 포함됩니다.

반환된 포인터 사용을 마쳤으면 를 호출하여 해제합니다.
LsaFreeMemory 함수입니다 . STATUS_NONE_MAPPED 또는 STATUS_SOME_NOT_MAPPED 오류 코드 중 하나로 인해 함수가 실패하는 경우에도 이 메모리를 해제해야 합니다 .

반환 값

함수가 성공하면 함수는 다음 NTSTATUS 값 중 하나를 반환합니다.

Description
STATUS_SOME_NOT_MAPPED
일부 이름은 번역할 수 없습니다. 정보 수준 반환 값입니다.
STATUS_SUCCESS
모든 이름이 발견되어 성공적으로 번역되었습니다.
 

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

Description
STATUS_NONE_MAPPED
어떤 이름도 번역되지 않았습니다.
 

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

설명

격리된 이름(예: UserName\) 대신 정규화된 계정 이름(예: DomainName UserName)을 사용합니다. 정규화된 이름은 모호하지 않으며 조회가 수행될 때 더 나은 성능을 제공합니다. 이 함수는 정규화된 DNS 이름(예: 예제)도 지원합니다..com\UserName) 및 UPN( 사용자 계정 이름 )(예: Someone@Example.com).

격리된 이름을 변환하면 여러 도메인에서 동일한 이름을 사용할 수 있으므로 이름 충돌이 발생할 수 있습니다. LsaLookupNames2 함수는 다음 알고리즘을 사용하여 격리된 이름을 변환합니다.

격리된 이름을 번역하려면

  1. 이름이 로컬 또는 대화형과 같이 잘 알려진 이름인 경우 함수는 해당 잘 알려진 SID( 보안 식별자)를 반환합니다.
  2. 이름이 기본 제공 도메인의 이름인 경우 함수는 해당 도메인의 SID를 반환합니다.
  3. 이름이 계정 도메인의 이름인 경우 함수는 해당 도메인의 SID를 반환합니다.
  4. 이름이 주 도메인의 이름인 경우 함수는 해당 도메인의 SID를 반환합니다.
  5. 이름이 신뢰할 수 있는 도메인의 이름 중 하나인 경우 함수는 해당 도메인의 SID를 반환합니다.
  6. 이름이 기본 제공 도메인의 사용자, 그룹 또는 로컬 그룹 계정인 경우 함수는 해당 계정의 SID를 반환합니다.
  7. 이름이 로컬 시스템의 계정 도메인에 있는 사용자, 그룹 또는 로컬 그룹 계정인 경우 함수는 해당 계정의 SID를 반환합니다.
  8. 이름이 주 도메인의 사용자, 그룹 또는 로컬 그룹인 경우 함수는 해당 계정의 SID를 반환합니다.
  9. 기본 도메인을 살펴보면 함수는 각 주 도메인의 신뢰할 수 있는 도메인을 확인합니다.
  10. 그렇지 않으면 이름이 번역되지 않습니다.

요구 사항

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

추가 정보

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_SID2

LSA_UNICODE_STRING

LsaFreeMemory