IADsAccessControlEntry 속성 메서드
IADsAccessControlEntry 인터페이스의 속성 메서드는 다음 표에 설명된 속성을 얻거나 설정합니다. 자세한 내용은 Interface 속성 메서드를 참조하세요.
속성
-
AccessMask
-
-
액세스 형식: 읽기/쓰기
-
스크립팅 데이터 형식: LONG
-
// C++ method syntax HRESULT get_AccessMask( [out] LONG* plnAccessMask ); HRESULT put_AccessMask( [in] LONG lnAccessMask );
개체에 대한 액세스 권한을 지정하는 플래그 집합을 포함합니다. Active Directory 개체에 대한 유효한 값은 ADS_RIGHTS_ENUM 열거형에 정의됩니다.
파일 또는 파일 공유 개체에 대한 자세한 내용과 가능한 값 목록은 파일 보안 및 액세스 권한을 참조하세요.
레지스트리 개체에 대한 자세한 내용과 가능한 값 목록은 레지스트리 키 보안 및 액세스 권한을 참조하세요.
-
-
AceFlags
-
-
액세스 형식: 읽기/쓰기
-
스크립팅 데이터 형식: LONG
-
// C++ method syntax HRESULT get_AceFlags( [out] LONG* plnAceFlags ); HRESULT put_AceFlags( [in] LONG lnAceFlags );
다른 컨테이너 또는 개체가 ACE를 상속할 수 있는지 여부를 지정하는 플래그 집합을 포함합니다. Active Directory 개체에 대한 유효한 값은 ADS_ACEFLAG_ENUM 열거형에 정의됩니다.
파일, 파일 공유 및 레지스트리 개체에 대한 자세한 내용과 가능한 값은 ACE_HEADER 구조체의 AceFlags 멤버를 참조하세요.
-
-
AceType
-
-
액세스 형식: 읽기/쓰기
-
스크립팅 데이터 형식: LONG
-
// C++ method syntax HRESULT get_AceType( [out] LONG* plAceType ); HRESULT put_AceType( [in] LONG lnAceType );
ACE의 형식을 나타내는 값을 포함합니다. Active Directory 개체에 대한 유효한 값은 ADS_ACETYPE_ENUM 열거형에 정의됩니다.
파일, 파일 공유 및 레지스트리 개체에 대한 자세한 내용과 가능한 값은 ACE_HEADER 구조체의 AceType 멤버를 참조하세요.
-
-
플래그
-
-
액세스 형식: 읽기/쓰기
-
스크립팅 데이터 형식: LONG
-
// C++ method syntax HRESULT get_Flags( [out] LONG* lnflags ); HRESULT put_Flags( [in] LONG lnflags );
ACE에 개체 형식 또는 상속된 개체 형식이 있는지 여부를 나타내는 플래그입니다. 유효한 플래그는 ADS_FLAGTYPE_ENUM 열거형에 정의됩니다.
-
-
InheritedObjectType
-
-
액세스 형식: 읽기/쓰기
-
스크립팅 데이터 형식: BSTR
-
// C++ method syntax HRESULT get_InheritedObjectType( [out] BSTR* bstrInheritedObjectType ); HRESULT put_InheritedObjectType( [in] BSTR bstrInheritedObjectType );
ADSI 개체의 자식 개체 형식을 나타내는 플래그입니다. 해당 값은 문자열 형식의 개체에 대한 GUID 입니다. 이러한 GUID 가 설정되면 ACE는 GUID에서 참조하는 개체에만 적용됩니다.
-
-
ObjectType
-
-
액세스 형식: 읽기/쓰기
-
스크립팅 데이터 형식: BSTR
-
// C++ method syntax HRESULT get_ObjectType( [out] BSTR* bstrObjectType ); HRESULT put_ObjectType( [in] BSTR bstrObjectType );
ADSI 개체 형식을 나타내는 플래그입니다. 해당 값은 속성에 대한 GUID 이거나 문자열 형식의 개체입니다. GUID는 ADS_RIGHT_DS_READ_PROP 및 ADS_RIGHT_DS_WRITE_PROP 액세스 마스크를 사용할 때 속성을 참조 합니다. GUID는 ADS_RIGHT_DS_CREATE_CHILD 및 ADS_RIGHT_DS_DELETE_CHILD 액세스 마스크를 사용할 때 개체를 지정합니다.
-
-
Trustee
-
-
액세스 형식: 읽기/쓰기
-
스크립팅 데이터 형식: BSTR
-
// C++ method syntax HRESULT get_Trustee( [out] BSTR* pbstrSecurityId ); HRESULT put_Trustee( [in] BSTR bstrSecurityId );
ACE가 적용되는 계정의 이름을 포함합니다.
-
예제
다음 코드 예제에서는 IADsAccessControlEntry 속성 메서드를 사용하여 임의 ACL에 항목을 추가하는 방법을 보여 줍니다.
Dim x As IADs
Dim sd As IADsSecurityDescriptor
Dim ace As IADsAccessControlEntry
Dim Dacl As IADsAccessControlList
Dim Ace1 As New AccessControlEntry
Dim Ace2 As New AccessControlEntry
On Error GoTo Cleanup
Set x = GetObject("LDAP://OU=Sales, DC=Fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
Set Dacl = sd.DiscretionaryAcl
' Show the existing ACEs.
For Each ace In Dacl
Debug.Print ace.Trustee
Next
' Setup the first ACE.
Ace1.AccessMask = -1 'Full Permission (Allowed)
Ace1.AceType = ADS_ACETYPE_ACCESS_ALLOWED
Ace1.AceFlags = ADS_ACEFLAG_INHERIT_ACE
Ace1.Trustee = "ACTIVED\Administrator"
' Setup the 2nd ACE.
Ace2.AccessMask = -1 'Full Permission (Denied)
Ace2.AceType = ADS_ACETYPE_ACCESS_DENIED
Ace2.AceFlags = ADS_ACEFLAG_INHERIT_ACE
Ace2.Trustee = "ACTIVED\Andyhar"
' Add the ACEs to the Discretionary ACL.
Dacl.AddAce Ace1
Dacl.AddAce Ace2
sd.DiscretionaryAcl = Dacl
x.Put "ntSecurityDescriptor", Array(sd)
x.SetInfo
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set x = Nothing
Set sd = Nothing
Set ace = Nothing
Set Dacl = Nothing
Set Ace1 = Nothing
Set Ace2 = Nothing
Set obj = Nothing
Set cls = Nothing
다음 코드 예제에서는 액세스 제어 항목을 표시합니다.
IADs *pADs = NULL;
IDispatch *pDisp = NULL;
IADsSecurityDescriptor *pSD = NULL;
VARIANT var;
HRESULT hr = S_OK;
VariantInit(&var);
hr = ADsOpenObject(L"LDAP://OU=Sales, DC=Fabrikam,DC=com",NULL,NULL,
ADS_SECURE_AUTHENTICATION, IID_IADs,(void**)&pADs);
if(FAILED(hr)) {goto Cleanup;}
hr = pADs->Get(CComBSTR("ntSecurityDescriptor"),&var);
if(FAILED(hr)) {goto Cleanup;}
pDisp = V_DISPATCH(&var);
hr = pDisp->QueryInterface(IID_IADsSecurityDescriptor,(void**)&pSD);
if(FAILED(hr)) {goto Cleanup;}
pDisp->Release();
pSD->get_DiscretionaryAcl(&pDisp);
hr = pDisp->QueryInterface(IID_IADsAccessControlList,(void**)&pACL);
if(FAILED(hr)) {goto Cleanup;}
hr = DisplayAccessInfo(pSD);
if(FAILED(hr)) {goto Cleanup;}
VariantClear(&var);
Cleanup:
if(pADs) pADs->Release();
if(pDisp) pDisp->Release();
if(pSD) pSD->Release();
return hr;
HRESULT DisplayAccessInfo(IADsSecurityDescriptor *pSD)
{
LPWSTR lpszFunction = L"DisplayAccessInfo";
IDispatch *pDisp = NULL;
IADsAccessControlList *pACL = NULL;
IADsAccessControlEntry *pACE = NULL;
IEnumVARIANT *pEnum = NULL;
IUnknown *pUnk = NULL;
HRESULT hr = S_OK;
ULONG nFetch = 0;
BSTR bstrValue = NULL;
VARIANT var;
LPWSTR lpszOutput = NULL;
LPWSTR lpszMask = NULL;
size_t nLength = 0;
VariantInit(&var);
hr = pSD->get_DiscretionaryAcl(&pDisp);
if(FAILED(hr)){goto Cleanup;}
hr = pDisp->QueryInterface(IID_IADsAccessControlList,(void**)&pACL);
if(FAILED(hr)){goto Cleanup;}
hr = pACL->get__NewEnum(&pUnk);
if(FAILED(hr)){goto Cleanup;}
hr = pUnk->QueryInterface(IID_IEnumVARIANT,(void**)&pEnum);
if(FAILED(hr)){goto Cleanup;}
hr = pEnum->Next(1,&var,&nFetch);
while(hr == S_OK)
{
if(nFetch==1)
{
if(VT_DISPATCH != V_VT(&var))
{
goto Cleanup;
}
pDisp = V_DISPATCH(&var);
hr = pDisp->QueryInterface(IID_IADsAccessControlEntry,(void**)&pACE);
if(SUCCEEDED(hr))
{
lpszMask = L"Trustee: %s";
hr = pACE->get_Trustee(&bstrValue);
nLength = wcslen(lpszMask) + wcslen(bstrValue) + 1;
lpszOutput = new WCHAR[nLength];
swprintf_s(lpszOutput,lpszMask,bstrValue);
printf(lpszOutput);
delete [] lpszOutput;
SysFreeString(bstrValue);
pACE->Release();
pACE = NULL;
pDisp->Release();
pDisp = NULL;
}
VariantClear(&var);
}
hr = pEnum->Next(1,&var,&nFetch);
}
Cleanup:
if(pDisp) pDisp->Release();
if(pACL) pACL->Release();
if(pACE) pACE->Release();
if(pEnum) pEnum->Release();
if(pUnk) pUnk->Release();
if(szValue) SysFreeString(szValue);
return hr;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows Vista |
지원되는 최소 서버 |
Windows Server 2008 |
헤더 |
|
DLL |
|
IID |
IID_IADsAccessControlEntry B4F3A14C-9BDD-11D0-852C-00C04FD8D503으로 정의됩니다. |