TreeSetNamedSecurityInfoW 함수(aclapi.h)
TreeSetNamedSecurityInfo 함수는 지정된 개체 트리의 보안 설명자에 지정된 보안 정보를 설정합니다. 이 함수를 사용하면 지정된 DACL( 임의 액세스 제어 목록 ) 또는 SACL( 시스템 액세스 제어 목록 )의 모든 요소가 전체 트리에 전파될 수 있습니다. 이 함수는 트리 작업의 진행률을 추적하는 콜백 함수를 지원합니다.
구문
DWORD TreeSetNamedSecurityInfoW(
[in] LPWSTR pObjectName,
[in] SE_OBJECT_TYPE ObjectType,
[in] SECURITY_INFORMATION SecurityInfo,
[in, optional] PSID pOwner,
[in, optional] PSID pGroup,
[in, optional] PACL pDacl,
[in, optional] PACL pSacl,
[in] DWORD dwAction,
[in] FN_PROGRESS fnProgress,
[in] PROG_INVOKE_SETTING ProgressInvokeSetting,
[in, optional] PVOID Args
);
매개 변수
[in] pObjectName
업데이트된 보안 정보를 받을 개체의 루트 노드 개체 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다. 지원되는 개체는 레지스트리 키 및 파일 개체입니다. 다양한 개체 형식에 대한 문자열 형식에 대한 설명은 SE_OBJECT_TYPE.
[in] ObjectType
pObjectName 매개 변수로 명명된 개체의 형식을 나타내는 SE_OBJECT_TYPE 열거형의 값입니다. 지원되는 값은 각각 레지스트리 키 및 파일 개체에 대해 SE_REGISTRY_KEY 및 SE_FILE_OBJECT.
[in] SecurityInfo
설정할 보안 정보의 유형을 나타내는 비트 플래그 집합입니다. 이 매개 변수는 SECURITY_INFORMATION 비트 플래그의 조합일 수 있습니다.
[in, optional] pOwner
개체의 소유자를 식별하는 SID 구조체에 대한 포인터입니다. SID는 보안 설명자의 소유자 SID로 할당할 수 있는 SID여야 합니다. SecurityInfo 매개 변수에는 OWNER_SECURITY_INFORMATION 플래그가 포함되어야 합니다. 소유자를 설정하려면 호출자에게 루트 개체를 포함하여 각 개체에 대한 WRITE_OWNER 액세스 권한이 있어야 합니다. 소유자 SID를 설정하지 않는 경우 이 매개 변수는 NULL일 수 있습니다.
[in, optional] pGroup
개체의 기본 그룹을 식별하는 SID 구조체에 대한 포인터입니다. SecurityInfo 매개 변수에는 GROUP_SECURITY_INFORMATION 플래그가 포함되어야 합니다. 그룹을 설정하려면 호출자에게 루트 개체를 포함하여 각 개체에 대한 WRITE_OWNER 액세스 권한이 있어야 합니다. 기본 그룹 SID를 설정하지 않는 경우 이 매개 변수는 NULL일 수 있습니다.
[in, optional] pDacl
재설정되는 개체에 대한 새 DACL을 나타내는 ACL( 액세스 제어 목록 ) 구조체에 대한 포인터입니다. SecurityInfo 매개 변수에는 DACL_SECURITY_INFORMATION 플래그가 포함되어야 합니다. 호출자는 루트 개체를 포함하여 각 개체에 대한 READ_CONTROL 및 WRITE_DAC 액세스 권한이 있어야 합니다. DACL을 설정하지 않는 경우 이 매개 변수는 NULL일 수 있습니다.
[in, optional] pSacl
다시 설정되는 개체에 대한 새 SACL을 나타내는 ACL 구조체에 대한 포인터입니다. SecurityInfo 매개 변수에는 SACL_SECURITY_INFORMATION, LABEL_SECURITY_INFORMATION, ATTRIBUTE_SECURITY_INFORMATION, SCOPE_SECURITY_INFORMATION 또는 BACKUP_SECURITY_INFORMATION 플래그가 포함되어야 합니다. SACL_SECURITY_INFORMATION 또는 SCOPE_SECURITY_INFORMATION 설정하는 경우 호출자는 SE_SECURITY_NAME 권한을 사용하도록 설정해야 합니다. SACL을 설정하지 않는 경우 이 매개 변수는 NULL일 수 있습니다.
[in] dwAction
이 함수의 동작을 지정합니다. AccCtrl.h에 정의된 다음 값 중 하나로 설정해야 합니다.
[in] fnProgress
TreeSetNamedSecurityInfo 함수의 진행률을 추적하는 데 사용되는 함수에 대한 포인터입니다. 진행률 함수의 프로토타입은 다음과 같습니다.
#include <windows.h>
#include <Aclapi.h>
#pragma comment(lib, "Advapi32.lib")
typedef VOID (*FN_PROGRESS) (
IN LPWSTR pObjectName, // Name of object just processed
IN DWORD Status, // Status of operation on object
IN OUT PPROG_INVOKE_SETTING
pInvokeSetting, // When to set
IN PVOID Args, // Caller specific data
IN BOOL SecuritySet // Whether security was set
);
progress 함수는 노드가 처리될 때 호출자에게 진행률 및 오류 정보를 제공합니다. 호출자는 fnProgress에서 진행률 함수를 지정하고 트리 작업 중에 TreeSetNamedSecurityInfo는 처리된 마지막 개체의 이름, 해당 작업의 오류 상태 및 현재 PROG_INVOKE_SETTING 값을 전달합니다. 호출자는 pInvokeSetting을 사용하여 PROG_INVOKE_SETTING 값을 변경할 수 있습니다.
사용할 진행률 함수가 없으면 이 매개 변수를 NULL로 설정합니다.
[in] ProgressInvokeSetting
진행률 함수의 초기 설정을 지정하는 PROG_INVOKE_SETTING 열거형의 값입니다.
[in, optional] Args
호출자가 지정한 진행률 함수 인수에 대한 VOID 에 대한 포인터입니다.
반환 값
함수가 성공하면 함수는 ERROR_SUCCESS 반환합니다.
함수가 실패하면 WinError.h에 정의된 오류 코드를 반환합니다.
설명
NULL 소유자, 그룹, DACL 또는 SACL 설정은 이 함수에서 지원되지 않습니다.
호출자에게 요청된 소유자, 그룹, DACL 및 SACL 업데이트를 지원하기 위한 적절한 권한과 권한이 포함되어 있지 않으면 업데이트가 수행되지 않습니다.
이 함수는 dwAction 매개 변수의 값이 TREE_SEC_INFO_SET 설정되고 ProgressInvokeSetting 매개 변수 값이 ProgressInvokePrePostError로 설정되고 fnProgress 매개 변수가 가리키는 함수가 pInvokeSetting 매개 변수의 값을 ProgressInvokePrePostError로 설정하는 경우 SetNamedSecurityInfo 함수와 동일한 기능을 제공합니다.
이 함수는 TreeResetNamedSecurityInfo 함수와 유사합니다.
- TreeSetNamedSecurityInfo의 dwAction 매개 변수가 TREE_SEC_INFO_RESET_KEEP_EXPLICIT 설정된 경우 함수는 KeepExplicit 매개 변수가 TRUE로 설정된 TreeResetNamedSecurityInfo와 동일합니다.
- TreeSetNamedSecurityInfo의 dwAction 매개 변수가 TREE_SEC_INFO_RESET 설정된 경우 함수는 KeepExplicit 매개 변수가 FALSE로 설정된 TreeResetNamedSecurityInfo와 동일합니다.
참고
aclapi.h 헤더는 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 TreeSetNamedSecurityInfo를 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | aclapi.h |
라이브러리 | Advapi32.lib |
DLL | Advapi32.dll |