Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

Cara menggunakan atribut PrimaryGroupID untuk menemukan kelompok utama untuk pengguna

PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.

Klik disini untuk melihat versi Inggris dari artikel ini:297951
RINGKASAN
Artikel ini menjelaskan metode yang efisien untuk menemukan kelompok utama pengguna.
INFORMASI LEBIH LANJUT

Latar belakang

Sebelum teknik yang dijelaskan dalam artikel ini dikembangkan, satu-satunya cara untuk menentukan pengguna kelompok utama adalah untuk melakukan permintaan objek Data ActiveX (ADO) dialek Lightweight Directory Access Protocol (LDAP) terhadap Active Directory untuk meminta semua kelompok objek dalam domain, dan kemudian menelusuri recordset kembali untuk mencari grup dengan PrimaryGroupToken yang cocok PrimaryGroupID pengguna. Query ini dapat menjadi sangat memakan waktu, tergantung pada jumlah kelompok-kelompok di domain tertentu.

PrimaryGroupToken objek grup adalah atribut yang dibangun. Ini berarti bahwa atribut tidak disimpan dalam direktori aktif tetapi ini dibangun pada klien dengan penyedia antarmuka layanan direktori aktif (ADSI). Karena atribut dibangun, itu tidak dapat digunakan pada kriteria pencarian dalam permintaan LDAP.

Mungkin untuk membangun pengenal keamanan (SID) untuk primaryGroup dengan mempertimbangkan berikut:
  • SID pengguna/kelompok terdiri dari domain yang relatif pengenal (RID) ditambah RID kelompok/pengguna. Untuk contoh jika SID untuk pengguna ini adalah S-1-111-222-333-efg, RID untuk pengguna ini adalah "efg" dan domain menghilangkan adalah S-1-111-222-333.
  • PrimaryGroupID atribut pada objek pengguna/kelompok memegang RID kelompok utama.
  • Kelompok utama pengguna harus menjadi kelompok yang ada di domain utama pengguna.
  • SID untuk kelompok utama dapat dibangun oleh concatenating domain RID dengan atribut primaryGroupID objek pengguna. Misalnya, domain RID bisa S-1-111-222-333 dan nilai primarygroupID bisa menjadi abc. SID kelompok utama kemudian akan S-1-111-222-333-abc.
Kode contoh yang tersedia di dalam artikel ini menggambarkan bagaimana membangun SID untuk kelompok utama pengguna dengan menghapus pengguna RID dari SID yang dan kemudian menggantikannya dengan primarygroupID (grup primary RID). Kode mengambil keuntungan dari objek IADsSID yang dilaksanakan dalam ADsSecurity.dll file. ADsSecurity.dll file adalah bagian dari antarmuka layanan direktori aktif (ADSI) software development kit (SDK) 2.5. Untuk men-download Active Directory Service antarmuka SDK 2.5, kunjungi Web site Microsoft berikut:Antarmuka IADsSID menyediakan metode scriptable untuk mengubah SID mentah menjadi bentuk bahasa definisi kata kunci keamanan (SDDL) dengan menggunakan ConvertSidToStringSid API. API ini hanya tersedia di Windows 2000 dan Windows Server 2003.

Agar metode ini untuk digunakan pada sistem berbasis Windows NT 4.0, SID mentah harus diubah menjadi rekan string melalui penggunaan dari beberapa jenis COM pembungkus DLL. Sebuah contoh tentang bagaimana untuk membangun bentuk SDDL SID janda NT 4.0 disediakan di artikel Basis Pengetahuan Microsoft berikut:

286182 Cara menggunakan Microsoft Visual Basic untuk mengkonversi SID mentah menjadi String SID

Langkah-langkah untuk membangun SID untuk kelompok dasar pengguna

  1. Mengikat ke objek pengguna.
  2. Mengambil ObjectSID properti objek pengguna.
  3. Menggunakan objek IADsSID untuk mengkonversi SID pengguna dari bentuk biner ke adalah bentuk SDDL.
  4. Strip off pengguna RID dari bentuk SDDL SID.
  5. Mengambil pengguna PrimaryGroupID properti dan mengubahnya menjadi unsigned panjang string.
  6. Tambahkan representasi string PrimaryGroupID SID pengguna dimodifikasi.
  7. Menggunakan IADsSID untuk mengubah bentuk SDDL SID menjadi Windows NT atau LDAP ADsPath.
  8. Mengikat ADsPath untuk mengambil informasi apapun tentang kelompok utama yang Anda inginkan.

Visual Basic Script untuk menemukan kelompok dasar untuk diberikan ADsPath

'' The following VBS code illustrates how to determine the primary group' given an ADsPath as a single argument. The script determines if the' string passed is a WinNT or LDAP path and then uses the appropriate' method for retrieving the Primary Group path.'' ADsSecurity Constants'const ADS_SID_RAW         = 0const ADS_SID_HEXSTRING	  = 1const ADS_SID_SAM         = 2const ADS_SID_UPN         = 3const ADS_SID_SDDL        = 4const ADS_SID_WINNT_PATH  = 5const ADS_SID_ACTIVE_DIRECTORY_PATH = 6const ADS_SID_SID_BINDING = 7'-------------------------------------------------' Function StrRID returns and unsigned long of' the given RID value' ' If the most significant bit is set in a VB Long' then VB will interpret the value as a negative number' and CStr will convert the unsigned long into a string with a leading' "-" sign.'' This function checks to see if the most significant bit' is set, then tricks the CStr function into outputting' and unsigned long value by using a double float value' to store the RID value, then uses the CStr function to get the' string version.'function StrRID( inVal )  dim dLocal  if( (inVal and &H80000000) <> 0 ) then    dLocal = CDbl((inval and &H7FFFFFFF))    dLocal = dLocal + 2^31    StrRID = cstr(dLocal)  else    StrRID = Cstr(inVal)  end ifend function'=================================================' Main Script'' Assumes that the first argument is a WinNT or' LDAP user path'set args = WScript.ArgumentsWScript.Echo "Start: "& Nowset ADsSid = CreateObject("ADsSID")'' Determine if we are using the LDAP or WinNT providers'userAdsPath = args(0)if( InStr(userAdsPath,"LDAP") <> 0 ) then  '  ' LDAP ADS Path, need to work with the an Active Directory Path  '  ADS_SID_Constant = ADS_SID_ACTIVE_DIRECTORY_PATHelse  '  ' WinNT Path, working with the WinNT provider  '  ADS_SID_Constant = ADS_SID_WINNT_PATHend if'  ' Initialize the IADsSID object and retrieve' the SDDL form of the SID'ADsSID.SetAs ADS_SID_Constant, CStr(userADsPath)DomainSID = ADsSID.GetAs(ADS_SID_SDDL)'' We have the SDDL form of the user's SID.' Remove the user's RID ( the last sub authority)' up to the "-"'DomainSID = mid(DomainSID,1,(InStrREV(DomainSID,"-")))'' Bind to the user object to retrieve the PrimaryGroupID.' Build the SID of the Primary group' from the domainSID and the Primary Group RID in' the PrimaryGroupID.'set obj = GetObject(userADsPath)lngGroupID = obj.Get("primaryGroupID")strGroupRID = StrRID( lngGroupID )DomainSID = DomainSID & strGroupRID'' Use ADsSID to retrieve a WinNT path or ' a SID Bind string to locate the LDAP path'ADsSID.SetAs ADS_SID_SDDL, CStr(DomainSID)if( ADS_SID_Constant = ADS_SID_ACTIVE_DIRECTORY_PATH ) then   '   ' With the LDAP provider, build a SID bind string and   ' retrieve the Group object via this bind string   '   SIDBindStr = ADsSID.GetAs(ADS_SID_HEXSTRING)   SIDBindStr = "LDAP://<SID=" & SIDBindStr & ">"   set oGrp = GetObject(SIDBindStr)   strPrimaryGroupADsPath = oGrp.Get("DistinguishedName")   set oGrp = Nothingelse   '   ' Its a WinNT path, retrieve the ADsPath for the WinNT object   '   strPrimaryGroupADsPath = ADsSID.GetAs( ADS_SID_Constant )end ifWScript.Echo "Primary group ADS Path for user : " & userADsPathWScript.Echo "Is: " & strPrimaryGroupADsPathWScript.Echo "Finished: " & Now				

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 297951 - Tinjauan Terakhir: 09/24/2011 18:49:00 - Revisi: 2.0

  • kbdswadsi2003swept kb32bitonly kbhowto kbmt KB297951 KbMtid
Tanggapan