다음을 통해 공유


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에 정의된 다음 값 중 하나로 설정해야 합니다.

의미
TREE_SEC_INFO_SET
0x00000001
보안 정보는 pObjectName 매개 변수 및 해당 개체의 자식 개체 트리에 지정된 개체에 설정됩니다. pDacl 또는 pSacl 매개 변수에 ACL 을 지정하면 보안 설명자가 개체와 연결됩니다. 보안 설명자는 상속 속성에 따라 자식 개체의 트리로 전파됩니다.
TREE_SEC_INFO_RESET
0x00000002
보안 정보는 pObjectName 매개 변수 및 해당 개체의 자식 개체 트리에 지정된 개체에서 다시 설정됩니다. 트리의 모든 개체에서 기존 보안 정보가 제거됩니다.

트리의 개체가 호출자에게 개체의 보안 설명자를 수정할 수 있는 적절한 권한을 부여하지 않으면 트리의 특정 노드와 해당 개체에 대한 보안 정보 전파를 건너뜁니다. 작업은 pObjectName 매개 변수로 지정된 개체 아래의 나머지 트리에서 계속됩니다.

TREE_SEC_INFO_RESET_KEEP_EXPLICIT
0x00000003
보안 정보는 pObjectName 매개 변수 및 해당 개체의 자식 개체 트리에 지정된 개체에서 다시 설정됩니다. 트리의 모든 개체에서 기존의 상속된 보안 정보가 제거됩니다. 트리의 개체에 명시적으로 설정된 보안 정보는 변경되지 않습니다.

트리의 개체가 호출자에게 개체의 보안 설명자를 수정할 수 있는 적절한 권한을 부여하지 않으면 트리의 특정 노드와 해당 개체에 대한 보안 정보 전파를 건너뜁니다. 작업은 pObjectName 매개 변수로 지정된 개체 아래의 나머지 트리에서 계속됩니다.

[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 함수와 유사합니다.

  • TreeSetNamedSecurityInfodwAction 매개 변수가 TREE_SEC_INFO_RESET_KEEP_EXPLICIT 설정된 경우 함수는 KeepExplicit 매개 변수가 TRUE로 설정된 TreeResetNamedSecurityInfo와 동일합니다.
  • TreeSetNamedSecurityInfodwAction 매개 변수가 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