Menghitung Grup dalam Domain
Grup dapat ditempatkan di kontainer atau unit organisasi (OU) apa pun di domain serta akar domain. Ini berarti bahwa grup dapat berada di banyak lokasi dalam hierarki direktori. Oleh karena itu, Anda memiliki dua pilihan untuk menghitung grup:
Menghitung grup yang secara langsung terkandung dalam kontainer, OU, atau di akar domain.
Secara eksplisit mengikat objek kontainer yang berisi grup untuk menghitung, mengatur filter yang berisi "grup" sebagai kelas menggunakan properti IADsContainer.Filter, dan gunakan metode IADsContainer::get__NewEnum untuk menghitung objek grup.
Teknik ini menghitung grup yang terkandung langsung dalam kontainer atau objek OU. Jika kontainer berisi kontainer lain yang berpotensi berisi grup lain, Anda harus mengikat kontainer tersebut dan menghitung grup secara rekursif pada kontainer tersebut. Untuk memanipulasi objek grup dan membaca hanya properti tertentu, gunakan pencarian mendalam yang dijelaskan di Opsi 2.
Karena enumerasi mengembalikan penunjuk ke objek ADSI COM yang mewakili setiap objek grup, Anda dapat memanggil QueryInterface untuk mendapatkan IAD, IADsGroup, dan penunjuk antarmuka IADsPropertyList ke objek grup; yaitu, Anda bisa mendapatkan penunjuk antarmuka ke setiap objek grup enumerasi dalam kontainer tanpa harus secara eksplisit mengikat setiap objek grup. Untuk melakukan operasi pada semua grup langsung dalam kontainer, enumerasi tidak memerlukan pengikatan ke setiap grup untuk memanggil IAD atau metode IADsGroup . Untuk mengambil properti tertentu dari grup, gunakan IDirectorySearch seperti yang dijelaskan dalam opsi kedua.
Pengecualian untuk ini terjadi ketika Anda mencoba menghitung grup yang berisi anggota yang merupakan prinsip keamanan terkenal, seperti Semua Orang, Pengguna terautentikasi, BATCH, dan sebagainya. Karena Anda tidak dapat mengikat jenis objek ini, objek tersebut tidak tercantum saat Anda menghitung grup dalam cakupan WinNT, meskipun mungkin tampak mengikat, karena metode IAD tertentu seperti Kelas, ADsPath, dan Nama mengembalikan hasil yang benar ketika dipanggil pada anggota enumerasi.
Lakukan pencarian mendalam untuk "objectCategory=group" untuk menemukan semua grup di pohon.
Pertama, ikat ke objek kontainer tempat memulai pencarian. Misalnya, untuk menemukan semua grup di domain, ikat ke akar domain; untuk menemukan semua grup di forest, ikat ke katalog global dan cari dari akar GC.
Kemudian gunakan IDirectorySearch untuk mengkueri menggunakan filter pencarian yang berisi (objectCategory=group) dan preferensi pencarian ADS_SCOPE_SUBTREE.
Catatan
Anda dapat melakukan pencarian dengan preferensi pencarian ADS_SCOPE_ONELEVEL untuk membatasi pencarian ke konten langsung objek kontainer yang Anda ikat.
IDirectorySearch hanya mengambil nilai properti tertentu dari grup. Untuk mengambil nilai, gunakan IDirectorySearch. Untuk memanipulasi objek grup yang dikembalikan dari pencarian, yaitu, menggunakan IAD atau metode IADsGroup, secara eksplisit mengikatnya. Untuk melakukan ini, tentukan distinguishedName sebagai salah satu properti yang akan dikembalikan dari pencarian dan gunakan nama khusus yang dikembalikan untuk mengikat ke setiap grup yang dikembalikan dalam pencarian.
Hanya properti tertentu yang diambil. Anda tidak dapat mengambil semua atribut tanpa secara eksplisit menentukan setiap atribut yang mungkin dari kelas grup.