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

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 297951
Bung t?t c? | Thu g?n t?t c?

? Trang này

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:
http://technet.Microsoft.com/en-US/Library/cc749949.aspx
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         = 0
const ADS_SID_HEXSTRING	  = 1
const ADS_SID_SAM         = 2
const ADS_SID_UPN         = 3
const ADS_SID_SDDL        = 4
const ADS_SID_WINNT_PATH  = 5
const ADS_SID_ACTIVE_DIRECTORY_PATH = 6
const 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 if
end function
'=================================================
' Main Script
'
' Assumes that the first argument is a WinNT or
' LDAP user path
'
set args = WScript.Arguments
WScript.Echo "Start: "& Now
set 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_PATH
else
  '
  ' WinNT Path, working with the WinNT provider
  '
  ADS_SID_Constant = ADS_SID_WINNT_PATH
end 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 = Nothing
else
   '
   ' Its a WinNT path, retrieve the ADsPath for the WinNT object
   '
   strPrimaryGroupADsPath = ADsSID.GetAs( ADS_SID_Constant )
end if
WScript.Echo "Primary group ADS Path for user : " & userADsPath
WScript.Echo "Is: " & strPrimaryGroupADsPath
WScript.Echo "Finished: " & Now
				

Thu?c tính

ID c?a bài: 297951 - L?n xem xét sau cùng: 26 Tháng Tám 2011 - Xem xét l?i: 2.0
T? khóa: 
kbdswadsi2003swept kb32bitonly kbhowto kbmt KB297951 KbMtvi
Máy d?ch
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

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com