Momentálne ste offline a čaká sa, kým sa znova pripojíte na internet

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

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
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: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         = 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				

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 297951 – Posledná kontrola: 10/31/2011 08:08:00 – Revízia: 2.0

  • kbdswadsi2003swept kb32bitonly kbhowto kbmt KB297951 KbMtsk
Pripomienky
tml>