В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Использование атрибута PrimaryGroupID найти основной группы пользователя

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:297951
Аннотация
Данная статья является эффективным способом поиска основной группы пользователя.
Дополнительная информация

Фон

Прежде, чем метод, описанный в этой статье был разработан, выполнить запрос объектов данных ActiveX (ADO) диалекта Lightweight Directory Access Protocol (LDAP) с Active Directory, чтобы запросить все объекты группы в домене, а затем перейдите по возвращенных записей для поиска группы с PrimaryGroupToken, соответствующей PrimaryGroupID пользователь был единственным способом определить основной группы пользователя. Этот запрос может быть очень много времени, в зависимости от количества групп для данного домена.

PrimaryGroupToken объект группы является построенного атрибута. Это означает, что атрибут не хранится в Active Directory, но создается на клиенте поставщиком интерфейса служб Active Directory (ADSI). Поскольку построенный атрибут нельзя использовать в критериях поиска в LDAP-запрос.

Имеется возможность создавать идентификатор безопасности (SID) для primaryGroup, если учесть следующее:
  • SID для группы или пользователя состоит из домена относительным идентификатором (RID) плюс RID группы или пользователя. Например, если идентификатор безопасности этого пользователя S-1-111-222-333-efg, RID для этого пользователя является «efg» и RID домена равно S-1-111-222-333.
  • PrimaryGroupID атрибут объекта пользователя или группы содержит RID основной группы.
  • Основная группа пользователя должна быть группа, существующая в его основном домене.
  • ИД безопасности основной группы может быть построен путем сцепления RID домена с помощью атрибута primaryGroupID объекта пользователя. Например RID домена может быть S-1-111-222-333 и может иметь значение primarygroupID abc. ИД безопасности основной группы будут S-1-111-222-333-abc.
Пример программы, приведенный в данной статье описывается разработка ИД безопасности основной группы пользователя путем удаления RID пользователя из его идентификатор безопасности и затем замените его primarygroupID (основной группы RID). Код использует объект IADsSID, реализованный в файле ADsSecurity.dll. Файл ADsSecurity.dll является частью интерфейсов служб Active Directory (ADSI) пакета средств разработки программного обеспечения (SDK) 2.5. Загрузить 2.5 SDK интерфейсы службы каталогов Active посетите следующий веб-узел корпорации Майкрософт:Интерфейс IADsSID обеспечивает сценарных способ преобразования необработанные SID в своей форме языка определения дескрипторов безопасности (SDDL) с помощью интерфейса API ConvertSidToStringSid. Этот API доступен только в Windows 2000 и Windows Server 2003.

Чтобы этот метод, используемый в системе под управлением Windows NT 4.0 необработанные SID должны быть преобразованы в его эквивалент строки посредством использования одного типа обертки COM DLL. Пример того, как построить SDDL-форма ИД безопасности в Widows NT 4.0 приводятся в следующей статье Microsoft Knowledge Base:

286182 Использование Microsoft Visual Basic для преобразования в строковый идентификатор SID необработанные SID

Действия, чтобы создать идентификатор безопасности основной группы пользователя

  1. Привязка к объекту пользователя.
  2. Извлечь ObjectSID свойство объекта пользователя.
  3. Преобразовать SID пользователя из соответствующей двоичной формы в объект IADsSID используется форма SDDL.
  4. Отбросить RID пользователя из SDDL-форма ИД безопасности.
  5. Получить пользователя PrimaryGroupID свойства и преобразовать его в неподписанных длинной строки.
  6. Добавление строковое представление PrimaryGroupID измененного SID пользователя.
  7. Используйте IADsSID для преобразования SDDL-форма ИД безопасности в Windows NT или в путь LDAP.
  8. Связать свойство ADsPath получить любые сведения об основной группы.

Сценария Visual Basic, чтобы найти основной группы для данного свойство 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				

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 297951 — последний просмотр: 06/05/2011 17:08:00 — редакция: 5.0

  • kbdswadsi2003swept kb32bitonly kbhowto kbmt KB297951 KbMtru
Отзывы и предложения