Ako používať atribút PrimaryGroupID nájsť primárna skupina používateľa

Preklady článku Preklady článku
ID článku: 297951
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Tento článok popisuje účinný spôsob nájdenia primárna skupina používateľa.

DALSIE INFORMACIE

Pozadie

Pred technika opísané v tomto článku bol vyvinutý, jediný spôsob, ako určiť, primárna skupina používateľa bolo vykonanie dotazu Lightweight Directory Access Protocol (LDAP) dialekt ActiveX Data Objects (ADO) proti Active Directory na vyžiadanie všetky skupiny objekty v doméne a potom prejdite cez vrátených záznamov vyhľadávať skupiny s PrimaryGroupToken, ktoré spárovaných PrimaryGroupID používateľa. Tento dotaz môže byť veľmi časovo náročné, v závislosti od počtu skupín v danej doméne.

PrimaryGroupToken objektu group je konštruované atribút. To znamená, že tento atribút nie je uložený v adresári Active Directory, ale je skonštruovaná na klienta poskytovateľom služieb rozhrania Active Directory (ADSI). Pretože atribút je zostrojený, nemožno použiť v vyhľadávacie kritériá v dotaze LDAP.

Je možné vybudovať identifikátor zabezpečenia (SID) pre primaryGroup berúc do úvahy nasledovné:
  • Identifikátor SID skupiny/používateľovi pozostáva z domény relatívny identifikátor (RID) plus RID skupiny/užívateľ. Napríklad ak SID pre tohto používateľa nie je S-1-111-222-333-efg, RID pre tohto používateľa je "efg" a domény RID je S-1-111-222-333.
  • PrimaryGroupID atribút objektu skupiny užívateľov drží RID primárnu skupinu.
  • Primárna skupina používateľa musí byť skupina, ktorá existuje v primárnej doméne používateľa.
  • SID pre primárnu skupinu môže byť postavený zreťazením domény RID s atribútom primaryGroupID objektu používateľa. Napríklad doména RID by mohli byť S-1-111-222-333 a hodnota primarygroupID by mohli byť abc. SID primárna skupina by potom S-1-111-222-333-abc.
Vzorky kód ustanovené v tomto článku ilustruje, ako vybudovať SID pre primárnu skupinu používateľa odstránením používateľa RID z jeho SID a nahradením za primarygroupID (primárna skupina RID). Kód využíva IADsSID objekt implementované v súbore ADsSecurity.dll. Súbor ADsSecurity.dll je súčasť Active Directory Service Interfaces (ADSI) software development kit (SDK) 2.5. Chcete prevziať Active Directory Service rozhrania SDK 2.5, navštívte nasledovnú webovú lokalitu spoločnosti Microsoft:
http://Technet.Microsoft.com/en-us/library/cc749949.aspx
IADsSID rozhranie poskytuje skriptovateľné metódu na konverziu surového SID do jej jazyku zabezpečenia Descriptor Definition jazyk (SDDL) forme pomocou ConvertSidToStringSid API. Túto API je k dispozícii na Windows 2000 a Windows Server 2003 iba.

Aby táto metóda použije na systém Windows NT 4.0, surového SID musia byť prepočítané náprotivku reťazec prostredníctvom uplatňovania niektoré typu COM wrapper knižnice DLL. Príklad stavať jazyku SDDL forme SID na vdovy NT 4.0 sa poskytuje v nasledovnom článku databázy Microsoft Knowledge Base:

286182 Používanie jazyka Microsoft Visual Basic na surové SID konvertovať reťazec SID

Kroky na vybudovanie SID primárne skupiny užívateľa

  1. Naviazať objektu používateľa.
  2. Načítať ObjectSID Vlastnosť objektu používateľa.
  3. Použitie IADsSID objekt na konvertovanie identifikátora SID z jeho binárnej forme do je jazyku SDDL formulára.
  4. Pásy z používateľa RID z jazyku SDDL forme identifikátora SID.
  5. Retrieve the user PrimaryGroupID Vlastnosť a previesť ho do nepodpísané dlhé reťazec.
  6. Pridajte reťazec zastúpenie PrimaryGroupID modifikované používateľské SID.
  7. Chcete konvertovať jazyku SDDL forme identifikátora SID do jeho Windows NT alebo LDAP ADsPath použiť IADsSID.
  8. Naviazať na ADsPath na získanie akejkoľvek informácie o primárnu skupinu, ktoré chcete.

Skript jazyka Visual Basic vyhľadajte Primary Group na danom 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         = 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
				

Vlastnosti

ID článku: 297951 - Posledná kontrola: 31. októbra 2011 - Revízia: 2.0
Kľúčové slová: 
kbdswadsi2003swept kb32bitonly kbhowto kbmt KB297951 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:297951

Odošlite odozvu

 

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