AddAccessDeniedObjectAce 함수(securitybaseapi.h)
AddAccessDeniedObjectAce 함수는 DACL(임의 액세스 제어 목록)의 끝에 ACE(액세스 거부 액세스 제어 항목)를 추가합니다. 새 ACE는 개체 또는 개체의 속성 집합 또는 속성에 대한 액세스를 거부할 수 있습니다. AddAccessDeniedObjectAce를 사용하여 지정된 형식의 자식 개체만 상속할 수 있는 ACE를 추가할 수도 있습니다.
구문
BOOL AddAccessDeniedObjectAce(
[in, out] PACL pAcl,
[in] DWORD dwAceRevision,
[in] DWORD AceFlags,
[in] DWORD AccessMask,
[in, optional] GUID *ObjectTypeGuid,
[in, optional] GUID *InheritedObjectTypeGuid,
[in] PSID pSid
);
매개 변수
[in, out] pAcl
DACL에 대한 포인터입니다. AddAccessDeniedObjectAce 함수는 이 DACL의 끝에 액세스 거부 ACE를 추가합니다. ACE는 ACCESS_DENIED_OBJECT_ACE 구조체 형식입니다.
[in] dwAceRevision
수정할 DACL의 수정 수준을 지정합니다. 이 값은 ACL_REVISION_DS 합니다. DACL의 수정 버전 수준이 ACL_REVISION_DS보다 낮으면 함수는 이를 ACL_REVISION_DS 변경합니다.
[in] AceFlags
ACE 상속을 제어하는 비트 플래그 집합입니다. 함수는 새 ACE의 ACE_HEADER 구조체의 AceFlags 멤버에서 이러한 플래그를 설정합니다. 이 매개 변수는 다음 값의 조합일 수 있습니다.
값 | 의미 |
---|---|
|
ACE는 컨테이너 개체에 의해 상속됩니다. |
|
ACE는 ACL( 액세스 제어 목록 )이 할당된 개체에는 적용되지 않지만 자식 개체에서 상속할 수 있습니다. |
|
상속된 ACE를 나타냅니다. 이 플래그를 사용하면 개체 트리의 보안을 변경하는 작업이 개체에 직접 적용된 ACE를 변경하지 않고 상속된 API를 수정할 수 있습니다. |
|
OBJECT_INHERIT_ACE 및 CONTAINER_INHERIT_ACE 비트는 상속된 ACE로 전파되지 않습니다. |
|
ACE는 비컨테이너 개체에 의해 상속됩니다. |
[in] AccessMask
ACCESS_MASK 형식을 사용하여 새 ACE가 지정된 SID(보안 식별자)에 대해 거부하는 액세스 권한을 지정하는 비트 플래그 집합입니다.
[in, optional] ObjectTypeGuid
새 ACE로 보호되는 개체, 속성 집합 또는 속성의 형식을 식별하는 GUID 구조체에 대한 포인터입니다. 이 매개 변수가 NULL인 경우 새 ACE는 ACL이 할당된 개체를 보호합니다.
[in, optional] InheritedObjectTypeGuid
새 ACE를 상속할 수 있는 개체의 형식을 식별하는 GUID 구조체에 대한 포인터입니다. 이 매개 변수가 NULL이 아닌 경우 지정된 개체 형식만 ACE를 상속할 수 있습니다. NULL이면 모든 형식의 자식 개체가 ACE를 상속할 수 있습니다. 두 경우 모두 상속은 AceFlags 매개 변수의 값과 자식 개체에 배치된 상속에 대한 보호를 통해 제어됩니다.
[in] pSid
새 ACE에서 액세스를 허용하는 사용자, 그룹 또는 로그온 세션을 식별하는 SID에 대한 포인터입니다.
반환 값
함수가 성공하면 반환 값이 0이 아닙니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다. 가능한 오류 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
새 ACE가 ACL에 맞지 않습니다. 더 큰 ACL 버퍼가 필요합니다. |
|
지정된 ACL이 제대로 구성되지 않았습니다. |
|
AceFlags 매개 변수가 잘못되었습니다. |
|
지정된 SID가 구조적으로 유효하지 않습니다. |
|
지정된 수정 버전을 알 수 없거나 ACL의 수정 버전과 호환되지 않습니다. |
|
ACE가 성공적으로 추가되었습니다. |
설명
ObjectTypeGuid와 InheritedObjectTypeGuid가 모두 NULL인 경우 AddAccessDeniedObjectAce 대신 AddAccessDeniedAceEx 함수를 사용합니다. 이는 ACCESS_DENIED_ACE ACCESS_DENIED_OBJECT_ACE 보다 작고 효율적이기 때문에 제안됩니다.
AddAccessDeniedObjectAce 함수는 ACL 끝에 새 ACE를 추가하지만 액세스 거부 API는 ACL의 시작 부분에 표시됩니다. 호출자는 API가 올바른 순서로 DACL에 추가되도록 해야 합니다. 자세한 내용은 DACL의 ACE 순서를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | securitybaseapi.h(Windows.h 포함) |
라이브러리 | Advapi32.lib |
DLL | Advapi32.dll |