LsaLookupNames 함수(ntsecapi.h)

LsaLookupNames 함수는 사용자, 그룹 또는 로컬 그룹 이름 배열에 해당하는 SID(보안 식별자)를 검색합니다.

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

LsaLookupNames 함수는 컴퓨터 계정을 검색할 수도 있습니다.

구문

NTSTATUS LsaLookupNames(
  [in]  LSA_HANDLE                  PolicyHandle,
  [in]  ULONG                       Count,
  [in]  PLSA_UNICODE_STRING         Names,
  [out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
  [out] PLSA_TRANSLATED_SID         *Sids
);

매개 변수

[in] PolicyHandle

Policy 개체에 대한 핸들입니다. 핸들에 POLICY_LOOKUP_NAMES 액세스 권한이 있어야 합니다. 자세한 내용은 정책 개체 핸들 열기를 참조하세요.

[in] Count

Names 배열의 이름 수를 지정합니다. Sids 배열에서 반환되는 항목의 수이기도 합니다 . 이 값은 1000보다 작거나 같아야 합니다.

[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_SID 구조체 배열에 대한 포인터를 받습니다. Sids 배열의 각 항목에는 이름 배열의 해당 항목에 대한 SID 정보가 포함됩니다.

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

반환 값

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

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

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

Description
STATUS_NONE_MAPPED
어떤 이름도 번역되지 않았습니다.
STATUS_TOO_MANY_NAMES
Names 배열 매개 변수가 너무 큽니다.
 

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

설명

경고

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

경고

격리된 이름의 제한 사항에 대한 자세한 내용은 LsaLookupNames2 설명서를 참조하세요.

LsaLookupNames 함수는 다음 알고리즘을 사용하여 계정 이름을 변환합니다.

이름을 번역하려면

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

LsaLookupNames는 로컬 계정, 로컬 도메인 계정 및 명시적으로 신뢰할 수 있는 도메인 계정을 조회하는 것 외에도 Windows 포리스트의 모든 도메인에 있는 모든 계정의 이름을 조회할 수 있습니다.

예제

이 함수를 호출하는 예제는 이름 및 SID 간 변환을 참조하세요.

요구 사항

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

추가 정보

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_SID

LSA_UNICODE_STRING

LsaFreeMemory

LsaLookupSids