다음을 통해 공유


AddConditionalAce 함수(winbase.h)

AddConditionalAce 함수는 지정된 ACL(액세스 제어 목록)에 ACE(조건부 액세스 제어 항목)를 추가합니다. 조건부 ACE는 액세스 검사 중에 평가되는 논리적 조건을 지정합니다.

구문

BOOL AddConditionalAce(
  [in, out] PACL   pAcl,
  [in]      DWORD  dwAceRevision,
  [in]      DWORD  AceFlags,
  [in]      UCHAR  AceType,
  [in]      DWORD  AccessMask,
  [in]      PSID   pSid,
  [in]      PWCHAR ConditionStr,
  [out]     DWORD  *ReturnLength
);

매개 변수

[in, out] pAcl

ACL에 대한 포인터입니다. 이 함수는 이 ACL에 ACE를 추가합니다.

이 매개 변수의 값은 NULL일 수 없습니다.

[in] dwAceRevision

수정할 ACL의 수정 수준을 지정합니다. 이 값은 ACL_REVISION 또는 ACL_REVISION_DS 수 있습니다. ACL에 개체별 ACE가 포함된 경우 ACL_REVISION_DS 사용합니다.

[in] AceFlags

ACE 상속을 제어하는 비트 플래그 집합입니다. 함수는 새 ACE의 ACE_HEADER 구조체의 AceFlags 멤버에서 이러한 플래그를 설정합니다. 이 매개 변수는 다음 값의 조합일 수 있습니다.

의미
CONTAINER_INHERIT_ACE
ACE는 컨테이너 개체에 의해 상속됩니다.
INHERIT_ONLY_ACE
ACE는 ACL이 할당된 개체에는 적용되지 않지만 자식 개체에서 상속할 수 있습니다.
INHERITED_ACE
상속된 ACE를 나타냅니다. 이 플래그를 사용하면 개체 트리의 보안을 변경하는 작업이 개체에 직접 적용된 ACE를 변경하지 않고 상속된 API를 수정할 수 있습니다.
NO_PROPAGATE_INHERIT_ACE
OBJECT_INHERIT_ACE 및 CONTAINER_INHERIT_ACE 비트는 상속된 ACE로 전파되지 않습니다.
OBJECT_INHERIT_ACE
ACE는 비컨테이너 개체에 의해 상속됩니다.

[in] AceType

ACE의 형식입니다.

다음 값 중 하나일 수 있습니다.

의미
ACCESS_ALLOWED_CALLBACK_ACE_TYPE
0x9
ACCESS_ALLOWED_CALLBACK_ACE 구조를 사용하는 액세스 허용 콜백 ACE입니다.
ACCESS_DENIED_CALLBACK_ACE_TYPE
0xA
ACCESS_DENIED_CALLBACK_ACE 구조를 사용하는 액세스 거부 콜백 ACE입니다.
SYSTEM_AUDIT_CALLBACK_ACE_TYPE
0xD
SYSTEM_AUDIT_CALLBACK_ACE 구조를 사용하는 시스템 감사 콜백 ACE입니다.

[in] AccessMask

지정된 SID에 부여할 액세스 권한의 마스크를 지정합니다.

[in] pSid

액세스 권한이 부여되는 사용자, 그룹 또는 로그온 계정을 나타내는 SID에 대한 포인터입니다.

[in] ConditionStr

ACE에 대해 평가할 조건문을 지정하는 문자열입니다.

[out] ReturnLength

ACL의 크기(바이트)입니다. pACL 매개 변수로 지정된 버퍼의 크기가 충분하지 않으면 이 매개 변수의 값이 필요한 크기입니다.

반환 값

함수가 성공하면 TRUE를 반환합니다.

함수가 실패하면 FALSE를 반환합니다. 확장 오류 정보는 GetLastError를 호출합니다. 가능한 오류 값은 다음과 같습니다.

반환 코드 설명
ERROR_INSUFFICIENT_BUFFER
새 ACE가 pAcl 버퍼에 맞지 않습니다.

요구 사항

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