LsaLookupSids2 함수(ntsecapi.h)
LsaLookupSids2 함수는 SID(보안 식별자) 배열에 해당하는 이름을 조회하고 인터넷 공급자 ID를 지원합니다. LsaLookupSids2에서 SID에 해당하는 이름을 찾을 수 없는 경우 함수는 문자 형식으로 SID를 반환합니다. LsaLookupSids 함수 대신 이 함수를 사용해야 합니다.
구문
NTSTATUS LsaLookupSids2(
[in] LSA_HANDLE PolicyHandle,
[in] ULONG LookupOptions,
[in] ULONG Count,
[in] PSID *Sids,
[out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
[out] PLSA_TRANSLATED_NAME *Names
);
매개 변수
[in] PolicyHandle
Policy 개체에 대한 핸들입니다. 이 핸들에는 POLICY_LOOKUP_NAMES 액세스 권한이 있어야 합니다. 자세한 내용은 정책 개체 핸들 열기를 참조하세요.
[in] LookupOptions
조회 동작을 수정하는 플래그입니다.
[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 구조체 배열에 대한 포인터를 받습니다. Names 배열의 각 항목에는 Sids 배열의 해당 항목에 대한 이름 정보가 포함됩니다. 계정 SID의 경우 각 구조체의 이름 멤버에는 계정의 격리된 이름이 포함됩니다. 도메인 SID의 경우 이름 멤버가 잘못되었습니다.
Names 배열에 있는 각 항목의 DomainIndex 멤버는 ReferencedDomains 매개 변수에 반환된 Domains 배열에 있는 항목의 인덱스입니다. 인덱스는 SID가 발견된 도메인의 도메인 배열을 식별 합니다 .
더 이상 정보가 필요하지 않은 경우 반환된 포인터를 LsaFreeMemory에 전달합니다. STATUS_NONE_MAPPED 또는STATUS_SOME_NOT_MAPPED 오류 코드 중 하나로 인해 함수가 실패하는 경우에도 이 메모리를 해제해야 합니다.
반환 값
함수가 성공하면 반환 값은 다음 NTSTATUS 값 중 하나입니다.
반환 코드 | 설명 |
---|---|
|
일부 SID는 번역할 수 없습니다. 정보 수준 반환 값입니다. |
|
모든 SID가 발견되어 성공적으로 번역되었습니다. |
함수가 실패하면 반환 값은 다음 값 중 하나 또는 LSA 정책 함수 반환 값 중 하나일 수 있는 NTSTATUS 코드입니다.
반환 코드 | 설명 |
---|---|
|
SID 중 어느 것도 번역되지 않았습니다. 오류 수준 반환 값입니다. |
|
Sids 배열 매개 변수가 너무 큽니다. |
LsaNtStatusToWinError 함수를 사용하여 NTSTATUS 코드를 Windows 오류 코드로 변환할 수 있습니다.
설명
플래그 LSA_LOOKUP_PREFER_INTERNET_NAMES MicrosoftAccount 및 Azure Active Directory 계정과 같은 인터넷 계정에 사용해야 합니다. 이 플래그를 지정하면 SID-Name 조회는 계정의 UPN을 MicrosoftAccount\foo@outlook.com 또는 AzureAD\foo@contoso.com형식으로 반환합니다. Microsoft 계정의 경우 로컬 SAM SID와 인터넷 SID 모두 이 플래그가 지정된 경우 UPN이 반환됩니다. LSA_LOOKUP_PREFER_INTERNET_NAMES 지정하지 않으면 AAD 계정에 대해 AzureAD\foo 형식의 NT4 스타일 이름이 반환됩니다. NT4 스타일 이름은 컴퓨터별로 지정되며 사용량을 신중하게 평가해야 하며 가능한 경우 피해야 합니다. MicrosoftAccounts의 경우 LSA_LOOKUP_PREFER_INTERNET_NAMES 지정되지 않은 경우 계정의 로컬 SID는 로컬 SAM 이름으로 변환되고 인터넷 SID는 UPN 이름으로 변환됩니다.
계정 SID의 경우 Name 멤버에 반환된 문자열은 계정의 격리된 이름(예: user_name)입니다. 계정의 복합 이름(예: Acctg\user_name)이 필요한 경우 ReferencedDomains 버퍼에서 도메인 이름을 가져와 백슬래시 및 격리된 이름을 추가합니다.
LsaLookupSids2 함수가 SID를 변환할 수 없는 경우 함수는 다음 알고리즘을 사용합니다.
- SID의 도메인이 알려진 경우 ReferencedDomains 버퍼에는 도메인에 대한 항목이 포함되고 Names 매개 변수에 반환된 문자열은 SID에서 계정의 RID(상대 식별자)의 유니코드 표현입니다.
- SID의 도메인을 알 수 없는 경우 Names 매개 변수에 반환된 문자열은 전체 SID의 유니코드 표현이며 ReferencedDomains 버퍼에는 이 SID에 대한 도메인 레코드가 없습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2012 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | ntsecapi.h |
라이브러리 | Advapi32.lib |
DLL | Advapi32.dll |