Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Trình duyệt của bạn không được hỗ trợ

Bạn cần cập nhật trình duyệt của mình để sử dụng trang web.

Cập nhật lên Internet Explorer phiên bản mới nhất.

Làm thế nào để sử dụng các thuộc tính PrimaryGroupID để tìm các nhóm chính cho một người sử dụng

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:297951
TÓM TẮT
Bài viết này mô tả một phương pháp hiệu quả của việc tìm kiếm các nhóm chính của người dùng.
THÔNG TIN THÊM

Nền

Trước khi kỹ thuật này được mô tả trong bài viết này đã được phát triển, cách duy nhất để xác định nhóm chính của người sử dụng đã là thực hiện truy vấn ActiveX Data Objects (ADO) phương ngữ Lightweight Directory Access Protocol (LDAP) đối với thư mục đang hoạt động để yêu cầu tất cả các nhóm đối tượng trong tên miền, và sau đó duyệt qua các recordset quay trở lại để tìm kiếm các nhóm với một PrimaryGroupToken kết hợp PrimaryGroupID người sử dụng. Truy vấn này có thể rất tốn thời gian, tùy thuộc vào số lượng các nhóm trong một tên miền nhất định.

PrimaryGroupToken là một nhóm đối tượng là một thuộc tính xây dựng. Điều này có nghĩa là các thuộc tính không được lưu trữ trong thư mục hoạt động nhưng được xây dựng trên máy khách bởi nhà cung cấp Active Directory dịch vụ giao diện (ADSI). Bởi vì các thuộc tính được xây dựng, nó không thể được sử dụng trong một tiêu chí tìm kiếm trong một truy vấn LDAP.

Nó có thể để xây dựng các định danh bảo mật (SID) cho primaryGroup bằng cách xem xét sau đây:
  • SID cho một nhóm/người sử dụng bao gồm các tên miền tương đối định danh (RID) cộng với RID nhóm/người sử dụng. Đối với ví dụ nếu SID cho người dùng này là S-1-111-222-333-efg, RID cho người dùng này là "efg" và tên miền của thoát là S-1-111-222-333.
  • Thuộc tính PrimaryGroupID trên một đối tượng người dùng/nhóm giữ RID nhóm chính.
  • Nhóm chính của người sử dụng phải là một nhóm mà tồn tại trong vùng chính của người dùng.
  • SID của nhóm chính có thể được xây dựng bởi concatenating miền RID với các thuộc tính primaryGroupID của đối tượng người sử dụng. Ví dụ, các tên miền RID có thể là S-1-111-222-333 và giá trị của primarygroupID có thể là abc. SID của nhóm chính sau đó sẽ là S-1-111-222-333-abc.
Mã mẫu cung cấp trong bài viết này minh hoạ cách xây dựng SID của nhóm chính của người dùng bằng cách loại bỏ người dùng RID từ SID của nó và sau đó thay thế nó bằng primarygroupID (tiểu học nhóm RID). Mã tận dụng các đối tượng IADsSID thực hiện trong tập tin ADsSecurity.dll. Các tập tin ADsSecurity.dll là một phần của hoạt động thư mục dịch vụ giao diện (ADSI) bộ phát triển phần mềm (SDK) 2.5. Để tải về Active Directory dịch vụ giao diện SDK 2.5, ghé thăm Web site sau của Microsoft:Giao diện IADsSID cung cấp một phương pháp kịch bản để chuyển đổi một SID nguyên thành hình thức bảo mật mô tả định nghĩa ngôn ngữ (SDDL) bằng cách sử dụng ConvertSidToStringSid API. API này chỉ là có sẵn trên Windows 2000 và Windows Server 2003.

Để cho phương pháp này được sử dụng trên một hệ thống dựa trên Windows NT 4.0, SID nguyên phải được chuyển đổi thành chuỗi đối tác của mình thông qua việc sử dụng của một số loại COM wrapper DLL. Một ví dụ về làm thế nào để xây dựng các hình thức SDDL của một SID trên Widows NT 4.0 được cung cấp trong bài viết cơ sở kiến thức Microsoft sau đây:

286182 Làm thế nào để sử dụng Microsoft Visual Basic để chuyển đổi một SID nguyên thành một chuỗi SID

Các bước để xây dựng SID của tiểu nhóm người dùng

  1. Ràng buộc đối tượng người sử dụng.
  2. Truy xuất các ObjectSID tài sản của đối tượng người dùng.
  3. Sử dụng các đối tượng IADsSID để chuyển đổi SID của người sử dụng từ dạng nhị phân của nó vào là hình thức SDDL.
  4. Dải tắt của người sử dụng RID từ dưới hình thức SID SDDL.
  5. Truy xuất của người dùng PrimaryGroupID bất động sản và chuyển đổi nó thành một chuỗi dài các.
  6. Nối thêm chuỗi đại diện của PrimaryGroupID cho người sử dụng sửa đổi SID.
  7. Sử dụng IADsSID để chuyển đổi dạng SDDL SID thành các Windows NT của nó hoặc máy nghe nhạc LDAP ADsPath.
  8. Liên kết với ADsPath để lấy bất cứ thông tin về nhóm chính mà bạn muốn.

Visual Basic Script để xác định vị trí tiểu nhóm cho một ADsPath nhất định

'' 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				

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 297951 - Xem lại Lần cuối: 08/26/2011 13:07:00 - Bản sửa đổi: 2.0

  • kbdswadsi2003swept kb32bitonly kbhowto kbmt KB297951 KbMtvi
Phản hồi