أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية استخدام سمة PrimaryGroupID العثور على المجموعة الأساسية للمستخدم

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية297951
الموجز
توضح هذه المقالة طريقة فعالة البحث عن المجموعة الأساسية للمستخدم.
معلومات أخرى

خلفية

قبل تم تطوير تقنية الموضحة في هذه المقالة الطريقة الوحيدة لتحديد المجموعة الأساسية للمستخدم تم لتنفيذ استعلام كائنات بيانات ActiveX (ADO) تعريف بروتوكول وصول لتغيير بيانات دليل (LDAP) مقابل "Active Directory" طلب كافة الكائنات المجموعة في المجال ثم قم بالاستعراض خلال مجموعة السجلات التي تم إرجاعها للبحث عن المجموعة مع PrimaryGroupToken مطابقة PrimaryGroupID المستخدم. يمكن أن يكون هذا الاستعلام يستهلك الكثير من الوقت, استناداً إلى عدد المجموعات في مجال محدد.

PrimaryGroupToken كائن المجموعة سمة مكونة. هذا يعني أن السمة غير مخزنة في "Active Directory" ولكن يتم إنشاء على العميل من قبل موفر واجهة خدمات الدليل Active Directory (ADSI). لأنه يتم إنشاء السمة لا يمكن استخدام معايير بحث في استعلام LDAP.

من الممكن إنشاء معرّف الأمان (SID) للحصول primaryGroup قبل الأخذ في الاعتبار ما يلي:
  • يتكون SID مجموعة/مستخدم من المجال المعرّف النسبي (RID) زائد RID المستخدم/المجموعة. على سبيل المثال إذا كانت SID لهذا المستخدم S-1-111-222-333-efg RID لهذا المستخدم "efg" ويتم الخاص RID المجال هو S-1-111-222-333.
  • السمة PrimaryGroupID على كائن مستخدم/مجموعة تتضمن RID المجموعة الأساسية.
  • يجب أن تكون المجموعة الأساسية للمستخدم مجموعة موجودة في المجال الرئيسي الخاص بالمستخدم.
  • يمكن أن يكون بناء SID المجموعة الأساسية بواسطة وصل المجال RID بالسمة primaryGroupID بكائن المستخدم. على سبيل المثال، قد يكون المجال RID S-1-111-222-333 وقد يكون قيمة primarygroupID أ ب ج. ستكون SID المجموعة الأساسية ثم S-1-111-222-333-abc.
يوضح نموذج التعليمة البرمجية في هذه المقالة كيفية إنشاء SID المجموعة الأساسية للمستخدم عن طريق إزالة RID المستخدم من SID الخاص به ثم باستبداله primarygroupID (المجموعة الأساسية RID). التعليمات البرمجية تستفيد من كائن IADsSID في الملف ADsSecurity.dll. ملف ADsSecurity.dll جزءاً من مجموعة تطوير البرامج (SDK) 2.5 واجهات خدمة دليل Active Directory (ADSI). لتنزيل 2.5 SDK واجهات خدمة دليل Active Directory قم بزيارة موقع Microsoft التالي على الويب: توفير واجهة IADsSID أسلوب للسماح بتشغيل البرامج النصية لتحويل SID raw إلى شكلها لغة تعريف واصف الأمان (SDDL) باستخدام API ConvertSidToStringSid. يتوفر API هذا على Windows 2000 و Windows Server 2003 فقط.

لكي يكون هذا الأسلوب لاستخدامه على نظام يستند إلى Windows NT 4.0 ، يجب تحويل SID raw إلى النسخة المطابقة له سلسلة والموجودة عبر بذلك استخدام من بعض أنواع المجمّع COM DLL الذي. يتم توفير مثال عن كيفية إنشاء نموذج SDDL SID على Widows NT 4.0 في مقالة "قاعدة معارف Microsoft" التالية:

286182كيفية استخدام Microsoft Visual Basic إلى تحويل SID أولية إلى سلسلة SID

الخطوات التالية لإنشاء SID مجموعة أساسية من مستخدم

  1. ربط كائن المستخدم.
  2. استرداد الخاصية ObjectSID بكائن المستخدم.
  3. إن استخدام كائن IADsSID لتحويل SID المستخدم من به الثنائي في النموذج SDDL.
  4. علامات إيقاف RID المستخدم من النموذج SDDL SID.
  5. استرداد الخاصية PrimaryGroupID المستخدم ثم تحويله إلى سلسلة طويلة غير موقعة.
  6. إلحاق تمثيل سلسلة PrimaryGroupID المستخدم المعدلة SID.
  7. استخدام IADsSID تحويل النموذج SDDL SID إلى Windows NT أو ADsPath 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 - آخر مراجعة: 01/15/2007 09:08:14 - المراجعة: 6.2

Microsoft Active Directory Service Interfaces 2.5, Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Visual Basic 6.0 Enterprise Edition Service Pack 3, Microsoft Visual Basic 6.0 Enterprise Edition Service Pack 4, Microsoft Visual Basic 6.0 Enterprise Edition Service Pack 5, Microsoft Active Directory Client Extension

  • kbmt kbdswadsi2003swept kb32bitonly kbhowto KB297951 KbMtar
تعليقات
pt>