LookupAccountSidA 함수(winbase.h)

LookupAccountSid 함수는 SID(보안 식별자)를 입력으로 허용합니다. 이 SID의 계정 이름과 이 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이면 로컬 시스템에서 계정 이름 변환이 시작됩니다. 로컬 시스템에서 이름을 확인할 수 없는 경우 이 함수는 로컬 시스템에서 신뢰할 수 있는 도메인 컨트롤러를 사용하여 이름을 resolve 시도합니다. 일반적으로 계정이 신뢰할 수 없는 도메인에 있고 해당 도메인의 컴퓨터 이름이 알려진 경우에만 lpSystemName 값을 지정합니다.

[in] Sid

조회할 SID 에 대한 포인터입니다.

[out, optional] Name

lpSid 매개 변수에 해당하는 계정 이름을 포함하는 null로 끝나는 문자열을 수신하는 버퍼에 대한 포인터입니다.

[in, out] cchName

입력 시 lpName 버퍼의 크기(TCHARs)를 지정합니다. 버퍼가 너무 작거나 cchName 이 0인 경우 함수가 실패하면 cchName 은 종료 null 문자를 포함하여 필요한 버퍼 크기를 받습니다.

[out, optional] ReferencedDomainName

계정 이름이 발견된 도메인의 이름을 포함하는 null로 끝나는 문자열을 수신하는 버퍼에 대한 포인터입니다.

서버에서 로컬 컴퓨터의 보안 데이터베이스에 있는 대부분의 계정에 대해 반환되는 도메인 이름은 서버가 도메인 컨트롤러인 도메인의 이름입니다.

워크스테이션에서 로컬 컴퓨터의 보안 데이터베이스에 있는 대부분의 계정에 대해 반환되는 도메인 이름은 시스템의 마지막 시작부터 컴퓨터의 이름입니다(백슬라이쉬는 제외됨). 컴퓨터 이름이 변경되면 시스템이 다시 시작될 때까지 이전 이름이 도메인 이름으로 계속 반환됩니다.

일부 계정은 시스템에서 미리 정의됩니다. 이러한 계정에 대해 반환된 도메인 이름은 BUILTIN입니다.

[in, out] cchReferencedDomainName

입력 시 lpReferencedDomainName 버퍼의 크기(TCHAR)를 지정합니다. 버퍼가 너무 작거나 cchReferencedDomainName이 0이면 종료되는 null 문자를 포함하여 cchReferencedDomainName이 필요한 버퍼 크기를 수신하므로 함수가 실패합니다.

[out] peUse

계정 유형을 나타내는 SID_NAME_USE 값을 받는 변수에 대한 포인터입니다.

반환 값

함수가 성공하면 함수는 0이 아닌 값을 반환합니다.

함수가 실패하면 0을 반환합니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

LookupAccountSid 함수는 먼저 잘 알려진 SID 목록을 확인하여 지정된 SID의 이름을 찾으려고 시도합니다. 제공된 SID가 잘 알려진 SID에 해당하지 않는 경우 함수는 기본 제공 및 관리적으로 정의된 로컬 계정을 확인합니다. 다음으로, 함수는 기본 도메인을 확인합니다. 주 도메인에서 인식할 수 없는 보안 식별자는 해당 SID 접두사에 해당하는 신뢰할 수 있는 도메인에 대해 검사됩니다.

함수가 SID의 계정 이름을 찾을 수 없는 경우 GetLastError 는 ERROR_NONE_MAPPED 반환합니다. 네트워크 시간 제한으로 인해 함수가 이름을 찾을 수 없는 경우 이 문제가 발생할 수 있습니다. 로그온 세션을 식별하는 로그온 SID와 같이 해당 계정 이름이 없는 SID에도 발생합니다.

로컬 계정, 로컬 도메인 계정 및 명시적으로 신뢰할 수 있는 도메인 계정에 대한 SID를 조회하는 것 외에도 LookupAccountSid 는 포리스트에 있는 계정의 SIDhistory 필드에만 표시되는 SID를 포함하여 포리스트의 모든 도메인에 있는 모든 계정에 대한 SID를 조회할 수 있습니다. SIDhistory 필드는 다른 도메인에서 이동된 계정의 이전 SID를 저장합니다. SID를 조회하기 위해 LookupAccountSid 는 포리스트의 글로벌 카탈로그를 쿼리합니다.

예제

이 함수를 사용하는 예제는 액세스 토큰에서 SID 검색을 참조하세요.

참고

winbase.h 헤더는 LOOKupAccountSid를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

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

추가 정보

Access Control 개요

기본 Access Control 함수

EqualPrefixSid

LookupAccountName

SID

SID_NAME_USE