Antarmuka IADsSecurityDescriptor (iads.h)

Antarmuka IADsSecurityDescriptor menyediakan akses ke properti pada objek deskriptor keamanan ADSI.

Warisan

Antarmuka IADsSecurityDescriptor mewarisi dari antarmuka IDispatch . IADsSecurityDescriptor juga memiliki jenis anggota berikut:

Metode

Antarmuka IADsSecurityDescriptor memiliki metode ini.

 
IADsSecurityDescriptor::CopySecurityDescriptor

Metode IADsSecurityDescriptor::CopySecurityDescriptor menyalin objek deskriptor keamanan ADSI yang menyimpan data keamanan tentang objek.

Keterangan

Gunakan antarmuka ini untuk memeriksa dan mengubah kontrol akses ke objek layanan direktori Active Directory. Anda juga dapat menggunakannya untuk membuat salinan deskriptor keamanan. Untuk mendapatkan antarmuka ini, gunakan metode IADs.Get untuk mendapatkan atribut ntSecurityDescriptor objek. Untuk informasi selengkapnya tentang cara membuat deskriptor keamanan baru dan mengaturnya pada objek, lihat Membuat Deskriptor Keamanan untuk Objek Direktori Baru dan DACL Null dan DACL Kosong.

Seringkali, tidak mungkin untuk memodifikasi semua bagian deskriptor keamanan. Misalnya, jika pengguna saat ini memiliki kontrol penuh atas objek, tetapi bukan administrator dan tidak memiliki objek, pengguna dapat memodifikasi DACL, tetapi tidak dapat memodifikasi pemilik. Ini akan menyebabkan kesalahan ketika ntSecurityDescriptor diperbarui. Untuk menghindari masalah ini, antarmuka IADsObjectOptions dapat digunakan untuk menentukan bagian tertentu dari deskriptor keamanan yang harus dimodifikasi.

Contoh

Contoh kode berikut menunjukkan cara menggunakan antarmuka IADsObjectOptions untuk hanya memodifikasi bagian tertentu dari deskriptor keamanan.

Const ADS_OPTION_SECURITY_MASK = 3
Const ADS_SECURITY_INFO_OWNER = 1
Const ADS_SECURITY_INFO_GROUP = 2
Const ADS_SECURITY_INFO_DACL = 4

Dim obj as IADs
Dim sd as IADsSecurityDescriptor
Dim oOptions as IADsObjectOptions

' Bind to the object.
Set obj = GetObject("LDAP://.....")

' Get the IADsSecurityDescriptor.
Set sd = obj.Get("ntSecurityDescriptor")

' Modify the DACL as required.

' Get the IADsObjectOptions for the object - not the IADsSecurityDescriptor.
Set oOptions = obj

' Set options so that only the DACL will be updated.
oOptions.SetOption ADS_OPTION_SECURITY_MASK, ADS_INFO_DACL

' Update the security descriptor.
obj.Put "ntSecurityDescriptor", sd
obj.SetInfo

Contoh kode berikut menunjukkan cara menampilkan data dari deskriptor keamanan.

' Get the security descriptor.
Dim x As IADs
Dim sd As IADsSecurityDescriptor

On Error GoTo Cleanup
 
Set x = GetObject("LDAP://DC=Fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
Debug.Print sd.Control
Debug.Print sd.Group
Debug.Print sd.Owner
Debug.Print sd.Revision
 
Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set x = Nothing
    Set sd = Nothing

Contoh kode berikut menunjukkan cara menampilkan data dari pendeskripsi keamanan objek direktori.

HRESULT DisplaySD(IADs *pObj)
{
    IADsSecurityDescriptor *pSD = NULL;
    BSTR bstr = NULL;
    long lVal = 0;    
    HRESULT hr = S_OK;
    VARIANT var;
    
    VariantInit(&var);

    if(pObj==NULL)
    {
        return E_FAIL;
    }
    
    hr = pObj->Get(CComBSTR("ntSecurityDescriptor"), &var);
    if(FAILED(hr)){goto Cleanup;}
    
    
    hr = V_DISPATCH(&var)->QueryInterface(IID_IADsSecurityDescriptor,(void**)&pSD);
    if(FAILED(hr)){goto Cleanup;}
    
   hr = pSD->get_Control(&lVal);
   printf("SD Control = %d\n",lVal);

   hr = pSD->get_Owner(&bstr);
   printf("SD Owner   = %S\n",bstr);
   SysFreeString(bstr);

   hr = pSD->get_Group(&bstr);
   printf("SD Group   = %S\n",bstr);
   SysFreeString(bstr);

   hr = pSD->get_Revision(&lVal);
   printf("SD Revision= %d\n",lVal);
        
Cleanup:
    VariantClear(&var);
    if(pSD) pSD->Release();
    return hr;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Target Platform Windows
Header iads.h

Lihat juga

Membuat Deskriptor Keamanan untuk Objek Direktori Baru

IADsAccessControlEntry

IADsAccessControlList

IDispatch

DACL Null dan DACL Kosong