Bagikan melalui


Metode Properti IADsAccessControlEntry

Metode properti antarmuka IADsAccessControlEntry mendapatkan atau mengatur properti yang dijelaskan dalam tabel berikut. Untuk informasi selengkapnya, lihat Metode Properti Antarmuka.

Properti

AccessMask

Berisi sekumpulan bendera yang menentukan hak akses untuk objek. Nilai yang valid untuk objek Direktori Aktif ditentukan dalam enumerasi ADS_RIGHTS_ENUM .

Untuk informasi selengkapnya dan daftar nilai yang mungkin untuk objek berbagi file atau file, lihat Keamanan File dan Hak Akses.

Untuk informasi selengkapnya dan daftar nilai yang mungkin untuk objek registri, lihat Keamanan Kunci Registri dan Hak Akses.

Jenis akses: Baca/tulis

Jenis data pembuatan skrip: LONG

// C++ method syntax
HRESULT get_AccessMask(
  [out] LONG* plnAccessMask
);
HRESULT put_AccessMask(
  [in] LONG lnAccessMask
);

AceFlags

Berisi sekumpulan bendera yang menentukan apakah kontainer atau objek lain dapat mewarisi ACE. Nilai yang valid untuk objek Direktori Aktif ditentukan dalam enumerasi ADS_ACEFLAG_ENUM .

Untuk informasi selengkapnya dan nilai yang mungkin untuk file, berbagi file, dan objek registri, lihat anggota AceFlags dari struktur ACE_HEADER .

Jenis akses: Baca/tulis

Jenis data pembuatan skrip: LONG

// C++ method syntax
HRESULT get_AceFlags(
  [out] LONG* plnAceFlags
);
HRESULT put_AceFlags(
  [in] LONG lnAceFlags
);

AceType

Berisi nilai yang menunjukkan jenis ACE. Nilai yang valid untuk objek Direktori Aktif ditentukan dalam enumerasi ADS_ACETYPE_ENUM .

Untuk informasi selengkapnya dan nilai yang mungkin untuk file, berbagi file, dan objek registri, lihat anggota AceType dari struktur ACE_HEADER .

Jenis akses: Baca/tulis

Jenis data pembuatan skrip: LONG

// C++ method syntax
HRESULT get_AceType(
  [out] LONG* plAceType
);
HRESULT put_AceType(
  [in] LONG lnAceType
);

Bendera

Bendera yang menunjukkan apakah ACE memiliki jenis objek atau jenis objek yang diwariskan. Bendera yang valid ditentukan dalam enumerasi ADS_FLAGTYPE_ENUM .

Jenis akses: Baca/tulis

Jenis data pembuatan skrip: LONG

// C++ method syntax
HRESULT get_Flags(
  [out] LONG* lnflags
);
HRESULT put_Flags(
  [in] LONG lnflags
);

InheritedObjectType

Bendera yang menunjukkan jenis objek anak dari objek ADSI. Nilainya adalah GUID ke objek dalam format string. Ketika GUID seperti itu diatur, ACE hanya berlaku untuk objek yang dirujuk oleh GUID.

Jenis akses: Baca/tulis

Jenis data pembuatan skrip: BSTR

// C++ method syntax
HRESULT get_InheritedObjectType(
  [out] BSTR* bstrInheritedObjectType
);
HRESULT put_InheritedObjectType(
  [in] BSTR bstrInheritedObjectType
);

ObjectType

Bendera yang menunjukkan jenis objek ADSI. Nilainya adalah GUID ke properti atau objek dalam format string. GUID mengacu pada properti saat masker akses ADS_RIGHT_DS_READ_PROP dan ADS_RIGHT_DS_WRITE_PROP digunakan. GUID menentukan objek saat ADS_RIGHT_DS_CREATE_CHILD dan masker akses ADS_RIGHT_DS_DELETE_CHILD digunakan.

Jenis akses: Baca/tulis

Jenis data pembuatan skrip: BSTR

// C++ method syntax
HRESULT get_ObjectType(
  [out] BSTR* bstrObjectType
);
HRESULT put_ObjectType(
  [in] BSTR bstrObjectType
);

Wali

Berisi nama akun tempat ACE berlaku.

Jenis akses: Baca/tulis

Jenis data pembuatan skrip: BSTR

// C++ method syntax
HRESULT get_Trustee(
  [out] BSTR* pbstrSecurityId
);
HRESULT put_Trustee(
  [in] BSTR bstrSecurityId
);

Contoh

Contoh kode berikut menunjukkan cara menambahkan entri ke ACL diskresi menggunakan metode properti IADsAccessControlEntry .

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

Contoh kode berikut menampilkan entri kontrol akses.

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;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows Vista
Server minimum yang didukung
Windows Server 2008
Header
Iads.h
DLL
Activeds.dll
IID
IID_IADsAccessControlEntry didefinisikan sebagai B4F3A14C-9BDD-11D0-852C-00C04FD8D503

Lihat juga

IADsAccessControlEntry

IADsAccessControlList

IADsSecurityDescriptor