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

INFO: تنشيط ملقمات COM و محطات Windows NT

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

169321
الموجز
عندما يطلب عميل كائن فئة للفئة مسجلة ، COM إما إرجاع كائن فئة أو يقوم بتشغيل عملية تسجيل أنها تحتوي على كائن الفئة المطلوبة. تسمى عملية الحصول على مرجع كائن فئة الخاصة بطلب عميل (أم لا يؤدي إلى إنشاء العملية أو "تشغيل") "التنشيط".

ظروف معينة، قد COM تشغيل عملية خادم جديد حتى عند تشغيل كائن فئة موجود ومن تم تسجيل الاستخدام متعددة. بالإضافة إلى ذلك، عندما تقوم بإنشاء COM عملية جديدة تلك العملية قد يكون تشغيل في بيئة أمان جديدة تُعرف باسم "محطة إطار" بدلاً من مشاركة على محطة إطار موجودة مثل محطة إطار تفاعلية. (للحصول على مزيد من المعلومات حول محطات إطار البحث وثائق SDK Win32 تلك العبارة.)

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

هذا المقال بفحص وحدات سيناريو مختلفة التنشيط ويشرح عندما يتم إنشاء محطات إطار وعمليات جديد.
معلومات أخرى
عند إنشاء عملية خادم جديد COM أو بتعيين محطة إطار جديد عملية خادم جديد يعتمد على عدة عوامل:
  1. هوية الأمان التي تم تعيين فئة COM للبدء. يمكن تعيين بواسطة أداة DCOMCNFG هوية فئة ثم المحدد بواسطة RunAs المسمى قيمة المفتاح معرف التطبيق للفئة.
  2. استخدام واحد أو متعددة الاستخدام التسجيل بواسطة كائنات فئة.
  3. Identifier(SID) الأمان من عملية العميل (هذا هو القيمة الرقمية التي تمثل لمستخدم معيّن حساب/هوية/أساس أمان في بيئة Windows NT).
  4. تسجيل الدخول معرف (LUID) العميل عملية. (يتم إنشاء معرّف تسجيل دخول جديدة لتسجيل دخول فريد لكل إلى كمبيوتر يستخدم Windows NT. تسجيل الدخول هذا قد يكون إما عبر مستخدم كتابة اسم المستخدم وكلمة المرور في موجه تسجيل الدخول NT أو عبر استدعاء LogonUser API win32.)
  5. التنشيط البعيد أو المحلي.
  6. محطة إطار من العميل.

فئات متعددة الاستخدام

تعتبر أي فئة متعددة الاستخدام فئة مسجل مع COM (عبر API CoRegisterClassObject()) تعيين إشارة REGCLS_MULTIPLEUSE. للحصول على مثل هذه الفئة، COM عادةً يستخدم نفس المثيل عملية الخادم كافة طلبات التنشيط العميل. ومع ذلك، لفئات في تكوين تشغيل تحت أمان المستخدمين تشغيل وفي بعض الحالات الأخرى COM يقوم بتشغيل مثيل جديد من عملية الخادم إلى طلبات تنشيط الخدمة. عندما يتم تشغيل مثيل جديد من عملية الخادم وبالتالي من الممكن أن عملية الخادم يحصل محطة إطار جديد أيضاً. سوف نقوم يختبر في وحدات سيناريو متعددة أدناه ولكن أولاً فإننا سوف مناقشة باختصار لماذا COM تشغيل العمليات الجديدة التي تحتوي على كائنات فئة المطلوبة عند تسجيل مثيل كائن الفئة مسبقاً كفئة "متعددة استخدام".

الأول عند فئة COM (بشكل أكثر دقة عند معرف التطبيق المقترن بفئة COM) مسجل مع نظام تشغيل كـ "المستخدم الذي قام بالتشغيل" مسؤول النظام قد قام بتعيين نهج أمان معينة مع الإشارة إلى تلك الفئة. النهج هو أن activator يجب أن تتلقى كائن فئة داخل عملية قيد التشغيل في نفس التعليمات البرمجية activating سياق الأمان.

يمكن أن تأتي نهج الأمان هذا إلى تعارض مع سلوك المعرفة من قبل الملقم الحاجة كائن واحد فقط مصنع الفئة كافة طلبات التنشيط (كما هو مشار إليه بواسطة REGCLS_MULTIPLEUSE). prioritizes COM نهج الأمان عبر سلوك التطبيق. لا ستعمل ملقمات متعددة الاستخدام المسجلة للتشغيل كـ "المستخدم الذي قام بالتشغيل" نتيجة لذلك، استناداً إلى قواعد متعددة الاستخدام العادي. سيتم بدء تشغيل عملية جديدة للحصول على أساس كل الأمان activating.

ثانياً، إذا عملية تشغيل بواسطة COM التشغيل في سياق أمان يختلف تحديد CLSID المحدد لا تسجل ذلك CLSID ، سيقوم هذا التسجيل fail(CoRegisterClassObject will return an error code CO_E_WRONG_SERVER_IDENTITY in this case). و إذا طلب تنشيط لاحقاً تصل عملية جديدة سوف يتم تشغيل بواسطة COM مع سياق الأمان المحدد CLSID/معرف التطبيق. تعذر على COM الثقة رمز استدعاء CoRegisterClassObject() (عملية غير آمن) ، فإنه يمكن فقط الثقة إعداد التسجيل (التسجيل قاعدة بيانات آمنة) لتحديد أي كائن الفئة استخدامه وكيف يتم تشغيلها. يمنع هذا السلوك انتحال illicit الجهاز ككل لكائنات الفئة بواسطة المستخدمين غير المخولين.

مع ذلك في الاعتبار نقوم الآن العودة إلى مشكلة عند محطات إطار وعمليات جديدة يتم إنشاؤها عندما يتم تشغيل ملقمات متعددة الاستخدام بواسطة COM. لاحظ أن غير المهم LUID العميل بأي طريقة في حالة استخدام متعددة فئة.
  1. هوية الأمان "المستخدم الحالي". في الحالة حيث يتم تكوين معرف التطبيق الخاص فئة COM متعددة الاستخدام لتشغيل كهوية "مستخدم تفاعلي" عملية الخادم الأول جداً و به كائن الفئة سيتم استخدامها بواسطة COM لخدمة كافة طلبات التنشيط اللاحقة. سيكون هذا المثيل ملقم محطة إطار تفاعلية حالة وجود واحدة (في حالة عدم وجود أي مستخدم تم تسجيل دخوله محلياً ثم فسوف تفشل كافة طلبات التنشيط). كما هو موضح أعلاه، إذا لم عملية تشغيل بواسطة COM لا قيد التشغيل في محطة إطار تفاعلية تسجيل CLSID ستفشل هذا التسجيل. و إذا طلب تنشيط يحين لاحقاً, سوف يتم تشغيل عملية جديدة مع سياق الأمان "مستخدم تفاعلي". يمنع هذا السلوك انتحال illicit كائنات فئة. منذ ذي يتم بدء تشغيل لم عمليات ملقم إضافية من قبل COM السؤال محطات الإطار الجديد moot. SID العميل LUID الخاص به أو ما إذا كان محلي أو بعيد لا يهم في هذه الحالة.
  2. هوية الأمان "هذا المستخدم". وبشكل مماثل، إذا معرف التطبيق الخاص فئة COM استخدام متعددة تم تكوين لتشغيلها كمستخدم"هذا" معالجة الخادم الأول (معرف أمان المعرّفة مسبقاً) ، و سيتم استخدام كائن الفئة الخاص به بواسطة COM لخدمة كافة طلبات التنشيط اللاحقة. سيكون هذا المثيل الأول من الملقم الخاص به محطة إطار إنشاء كجزء من إنشاء العملية الأولى. منذ ذي يتم بدء تشغيل لم عمليات ملقم إضافية من قبل COM السؤال محطات الإطارات الإضافية moot. SID العميل LUID الخاص به أو ما إذا كان محلي أو بعيد لا يهم في هذه الحالة. لاحظ أنه سيتم إنشاء محطة إطار جديد عند بدء تشغيل المثيل الأول من معرف فئة/التطبيق تكوينها ليتم تشغيلها كـ "هذا المستخدم," إذا كان المستخدم نفسه تم تسجيل دخوله في winstation تفاعلية. يستخدم COM أبداً winstation تفاعلية تشغيل ملقم تم تكوينه لتشغيلها كمستخدم"هذا" لأن قد ينتج سلوك مختلف الفئة استناداً إلى المشكلة غير المرتبطة من هوية المستخدم الذي سجل دخوله حالياً. كما هو موضح أعلاه، إذا لم عملية تشغيل بواسطة COM ويحاول لا قيد التشغيل في الحساب المحدد في "هذا المستخدم" تسجيل CLSID التي يفشل تسجيل و إذا طلب تنشيط لاحقاً تصل عملية جديدة سوف يتم تشغيل في حساب "المستخدم هذا المستخدمين". يمنع هذا السلوك انتحال illicit كائنات فئة. ومن ناحية أخرى، إذا تسجيل العملية عن تكوين معرف معطى CLSID/التطبيق لتشغيل "هذا المستخدم" ، يتم إنشاء في حساب المستخدم المناسبة بواسطة بعض العامل غير COM (على سبيل المثال، تم تشغيله من قبل المستخدم الحالي عندما يكون المستخدم الحالي لنفس المستخدم كـ "هذا المستخدم" أو يتم تشغيلها بواسطة CreateProcess() بواسطة خدمة قيد التشغيل في نفس "هذا المستخدم" سياق أمان) ، ثم تسجيل كائنات فئة REGCLS_MULTIPLEUSE الخاص به, سيتم استخدام COM كائن الفئة الموجودة قيد التشغيل لتنفيذ اللاحقة طلبات التنشيط الواردة من أي عميل.
  3. هوية الأمان "تشغيل المستخدم". في هذه الحالة، يتم تعيين معرف التطبيق الخاص الفئة لتشغيل ضمن idenitity "بدء تشغيل المستخدم" (هذا والتي تعرف أيضاً باسم دراسي "تنشيط كـ Activator"). a. عميل المحلي. أولاً ضع في الاعتبار حالة الأحرف الجهاز المحلي. هناك قاعدتين: 1. يؤدي إلى كل عميل التنشيط مختلفة SID COM تشغيل مثيل جديد من عملية الخادم حتى في نفس محطة إطار. 2. حتى عن تطابق معرفات الأمان (مثل الحالة حيث لنفس المستخدم بتسجيل الدخول أكثر من مرة واحدة إلى جهاز NT واحد) ، سيؤدي كل محطة إطار العميل المحلي مختلفة COM تشغيل مثيل جديد من عملية الخادم. بمعنى آخر، تتم مطلقًا مشاركة ملقمات متعددة استخدام هوية المستخدم تشغيل عبر محطات الإطار. ستشترك كافة العمليات العميل مع SID نفس ومحطات إطار نفس عملية خادم واحد في نفس محطة إطار. حيث أن يشارك الملقم محطة إطار من العميل يتم إنشاء لم محطات إطار جديد. على سبيل المثال، افترض أنه يتم بشكل تفاعلي تسجيل دخولك كـ a_domain\a_user. تشغيل مثيلات متعددة من العميل كافة الذي سيقوم بالاتصال نفس مثيل الملقم (الذي يحتوي على محطة إطار تفاعلية). الآن دعنا قل لديك عميل ، والتي هي خدمة التي تم تعيين بدء تشغيل بدء ضمن a_domain\a_user. سيتم تشغيل هذه الخدمة مثيل جديد من ملقم COM. يحدث هذا لأن COM يؤدي إلى مثيل جديد من ملقم يتم تشغيل منذ عملية الخدمة لدى محطة إطار غير محطة إطار تفاعلية--على الرغم من أن يتم هوية عملية service(client) نفس هوية عملية الملقم قيد التشغيل (a_domain\a_user). مع ذلك، لاحظ أنه يتم إنشاء لم محطة إطار جديد في عملية ملقم COM. ترث الخادم لا يزال محطة إطار الخدمة. إذا تم تعيين الخدمة لبدء ضمن LocalSystem ثم بالتفاعل مع سطح المكتب (راجع خانة الاختيار "السماح الخدمة إلى التعامل مع سطح المكتب" في الخدمة التطبيق الصغير في لوحة التحكم) ، ثم سيتم تشغيل الخدمة في محطة إطار تفاعلية أو winsta0. في هذه الحالة COM سيتم تشغيل مثيل جديد من الملقم (SID العميل وهو LocalSystem في هذه الحالة مختلفة تلك SID الخاص بالملقم والذي هو a_domain\a_user) في محطة إطار تفاعلية. b. عميل بعيد. في حالة التي التنشيط البعيد يتجاهل COM محطة إطار من العميل لأن العميل البعيد بعكس الحالة المحلي أعلاه. القاعدة هنا هي أنه سيؤدي كل عميل جديد SID مثيل جديد من عملية الخادم أن يتم تشغيل كل عملية الخادم الجديد سوف تحصل على محطة إطار جديد. طلبات التنشيط اللاحقة بواسطة العملاء البعيدين بنفس سيتم إعادة استخدام SID الموجود تسجيل كائن الفئة بالإضافة إلى محطة عملية وإطار الخاصة به. على سبيل المثال، افترض أن يتم تسجيل دخولك كـ a_domain\a_user على أجهزة مختلفة 10. سيتصل العملاء من كافة أجهزة الكمبيوتر هذه نفس مثيل الملقم على جهاز الملقم. سيتم تشغيل عميل من جهاز a_domain\b_user مثيل ملقم جديد و محطة إطار جديد. سيتم إعادة استخدام للمتصلين البعيد مع SID نفسها كمستخدم محلي تم بدء تشغيل خادم COM تسجيل CLSID المطلوبة على كائن الفئة الموجودة. ومع ذلك، ترتيب تشغيل خادم COM الضروري في هذه الحالة. إذا كان يتم تشغيل الملقم بواسطة العميل المحلي أولاً, سيتم الاتصال العميل البعيد مع SID نفسها إلى هذا الملقم. ومن ناحية أخرى، إذا الملقم يتم تشغيل بواسطة عميل بعيد أولاً ثم عميل محلي مع SID نفس سيتم بدء تشغيل مثيل جديد من الملقم. ينتقل هذا مرة أخرى إلى قواعد محطة إطار المذكورة أعلاه. لعملاء المحلي محطة إطار من الملقم والعميل يجب أن تطابق ، للعملاء البعيدين تجاهل محطة إطار من العميل. على سبيل المثال، إذا كان عميل المحلي a_domain\a_user تشغيل الخادم أولاً, ثم a_domain\a_user عميل بعيد يتصل الملقم. وعلى العكس، إذا a_domain\a_user العميل البعيد تشغيل الخادم أولاً, ثم a_domain\a_user عميل المحلي سيتم تشغيل مثيل ملقم جديد و محطة إطار جديد. لا يهم LUID العميل في هذه الحالة.
  4. ملقمات COM تستند إلى خدمة. معرف COM فئة/التطبيق التي حزم في خدمة Win32 necessity العملي ملقم استخدام متعددة حيث يمكن أن يتم تشغيل الخدمات مرة واحدة فقط. في هذه الحالة، عند طلب التنشيط الأول يتم تشغيل عملية جديدة في محطة الإطار الخاص بها. هناك استثناءات جهازي هذا: a. حالة تعيين الخدمة إلى تشغيل تحت الحساب LocalSystem ، فلن تتوارث إلى محطة إطار معرّف مسبقاً نظام. b. إذا الخدمة تعيين تشغيل تحت الحساب LocalSystem يمكن التفاعل مع سطح المكتب, فلن تتوارث محطة إطار تفاعلية أو winsta0. كافة طلبات التنشيط اللاحقة ما إذا كان محلي أو بعيد, يتم معالجتها من قبل كائن الفئة الخدمة. كما هو موضح أعلاه، إذا لم يتم تشغيل بواسطة عملية سوف يتم تشغيل COM و لا يعمل كما يسجل الخدمة المحددة CLSID ، فسوف تفشل هذا التسجيل و إذا طلب تنشيط لاحقاً وصول الخدمة المسجلة. يمنع هذا السلوك انتحال illicit كائنات فئة.

فئات استخدام واحد

ملاحظة: فئات Single-تستخدم يجب تجنب قدر الإمكان. تسجيل الاستخدام واحد هو إعداد التوارث و تهدف لدعم تطبيقات COM القديمة كما لتسهيل ترقية التطبيقات COM غير القديمة إلى COM. من المستحسن جداً تم تصميمها فئات جديدة لدعم تسجيل كائن الفئة متعددة الاستخدام. هذا خاصةً في حالة التي ملقمات مع الهوية "هذا المستخدم" ، حيث يؤدي فئات استخدام واحد بالضبط المقابل تأثير multi-use الفئات. إنشاء ملقم جديد عملية ومحطة إطار جديد لكل التنشيط ثم يمكن كما قمنا مناقشة أدناه أن يسبب هذا مشاكل موارد تحت Windows NT.

تعتبر أي فئة واحدة استخدام أحد مسجل مع COM (عبر API CoRegisterClassObject()) تعيين إشارة REGCLS_SINGLEUSE. للحصول على مثل هذه الفئة، COM سيتم دوماً بدء تشغيل مثيل جديد من فئة عملية الخادم لكل طلب التنشيط من أي عميل (محلي أو بعيد). لأغراض من هذه المقالة المتبقية السؤال: عند سيحصل الملقم على محطة إطار جديد أيضاً ؟
  1. هوية الأمان "المستخدم الحالي". الحصول على الحالة التي يتم تعيين فئة واحدة الاستخدام بواسطة معرف التطبيق الخاص به لبدء تحت هوية "مستخدم تفاعلي". للحصول على هذه الحالة، سوف كل مثيل جديد من عملية الخادم مشاركة محطة إطار تفاعلية دوماً إذا وجدت (في حالة عدم وجود أي مستخدم تم تسجيل دخوله محلياً ثم فسوف تفشل كافة طلبات التنشيط). سيتم إنشاء لم محطة إطار جديد بواسطة COM.
  2. هوية الأمان "هذا المستخدم". الآن خذ بعين الاعتبار حالة الأحرف حيث تعيين معرف فئة COM واحد استخدام التطبيق لتعمل تحت هوية "هذا المستخدم". في هذه الحالة، القاعدة أمراً بسيطاً للغاية. يقوم كل التنشيط عميل جديد بتشغيل عملية جديدة في محطة إطار جديد. وينطبق هذا بغض النظر عن ما إذا كان المستخدم المعينة على أنها "هذا المستخدم" بتسجيل الدخول إلى محطة إطار تفاعلية في وقت أي من طلبات التنشيط.
  3. هوية الأمان "تشغيل المستخدم". a. عميل المحلي. في سيناريو تنشيط الجهاز المحلي سيتم دوماً الحصول على عملية الخادم محطة إطار من العميل. لا توجد محطات إطار جديد يتم إنشاء أي وقت مضى. على سبيل المثال، افترض أن بشكل تفاعلي دخولك a_domain\a_user "و" تشغيل مثيلات متعددة من البرنامج العميل. سوف تحصل على كل مثيل جديد الناتج ملقم محطة إطار تفاعلية. الآن افترض أن العميل خدمة تعمل تحت حساب النظام المحلي. خادم COM في هذه الحالة سيتم مشاركة محطة إطار من عملية الخدمة. b. عميل بعيد. في حالة التنشيط البعيد يتجاهل COM محطة إطار من العميل لأن العميل البعيد. دوماً سوف يتم بدء تشغيل عملية مثيل ملقم جديد لكل للتنشيط البعيد. القواعد: 1. من أجل كل جديد العميل البعيد SID ، سيتم إنشاء محطة إطار جديد عملية الخادم. 2. على كل جديد العميل البعيد LUID ، سيتم إنشاء محطة إطار جديد عملية الخادم. 3. سيقوم بإنشاء لكافة العملاء البعيدين مع زوج SID/LUID نفس الملقمات التي تتم مشاركة نفس محطة إطار. على سبيل المثال، يتم تسجيل دخولك الجهاز العميل البعيد كما a_domain\a_user. يقوم هذا العميل بتشغيل الملقم البعيد الذي سيحصل على محطة إطار جديد. الآن، إذا بدأت a_domain\a_user مثيل ثاني من تطبيق العميل من نفس الآلة العميل الذي بدوره يقوم بتشغيل نسخة جديدة من الملقم على الجهاز البعيد ، تتم مشاركة هذا الملقم محطة إطار الملقم الأصلي. الآن افترض بتسجيل الدخول إلى جهاز آخر مرة أخرى مثل a_domain\a_user وقم بتشغيل العميل من هناك. يكون مثيل الملقم المطابق محطة إطار جديد. يوضح هذا أنه حتى في حالة عميل SIDs هي نفسها، لأن لدى العميل الثاني LUID مختلفة عملية الملقم به سوف تحصل على محطة إطار جديد.
  4. ملقمات COM تستند إلى خدمة. يجب أن يكون تطبيق واحد استخدام الفئات أبداً خدمات Windows NT. المفيد لا ، لأنه لا يمكن تشغيل مثيلات متعددة من عملية خدمة Windows NT.

جدول سيناريوهات Summarizing

---------------------------------------------------------------------------
       |                      Multiple-Use Server       |             (class factory has requested reuse)       |                       Activation Modes       |-------------------------------------------------------------------       |   Interactive     | As "This       |As "Launching    | Win32Client |      User         |   User"        |   user"         | service				
Local  | Process launched  | Process        | Process         | Service       | in the            | launched in a  | launched client | started on       | interactive window| new window     | window station  | first       | station on first  | station on     | on first        | activation       | activation        | first          | request,        | request       | request,          | activation     | subsequent      | (new winsta       | subsequent        | request,       | requests from   | or system/        | requests get      | subsequent     | the same SID/   | interactive       | existing class    | requests get   | window station  | winsta       | object,           | existing class | get existing    | depending       | activations fail  | object         | class object, no| on service       | if no user logged |                | sharing of class| config),       | on locally        |                | objects across  | subsequent       |                   |                | window stations | requests       |                   |                | even if same SID| get-------|                   |                |-----------------| existingRemote |                   |                | Process launched| class       |                   |                | in new winsta on| objects       |                   |                | first activation|       |                   |                | request by a    |       |                   |                | SID, subsequent |       |                   |                | remote requests |       |                   |                | by the same SID |       |                   |                | get existing    |       |                   |                | class object;   |       |                   |                | class launched  |       |                   |                | by local user   |       |                   |                | reused by remote|       |                   |                | callers with    |       |                   |                | same SID        |				
---------------------------------------------------------------------------

---------------------------------------------------------------------------
       |                      Single-Use Server       |          (new process created for each activation request)       |                       Activation Modes       |-------------------------------------------------------------------       |   Interactive     | As "This       |As "Launching    | Win32Client |      User         |   User"        |   user"         | service				
Local  | Process always    | Process always | Process always  | N/A(only       | launched in the   | launched in a  | launched in     | one       | interactive       | new window     | the window      | activation       | window station,   | station        | station of      | possible)       | if no interactive |                | client process  |       | window station    |                |                 |       | activation fails  |                |                 |-------|                   |                |-----------------|Remote |                   |                | if both SID and |       |                   |                | LUID of the     |       |                   |                | client match    |       |                   |                | previous client |       |                   |                | activation,     |       |                   |                | process launched|       |                   |                | in existing     |       |                   |                | window station, |       |                   |                | otherwise in new|       |                   |                | windowstation   |				
---------------------------------------------------------------------------

محطات إطار والموارد Windows NT

في هذا المقطع فإننا سوف يختبر ضمانات في إنشاء محطات الإطار الجديد تحت Windows NT وما الذي يجب أن تأثير تكوين الخادم COM. كما سوف تشاهد هناك حد لعدد محطات الإطار التي يمكن إنشاؤها على جهاز Windows NT. عندما يتم تجاوز ، ستفشل Windows NT محاولة بواسطة COM تشغيل مثيل جديد من عملية الخادم. عادةً ما تظهر رسالة خطأ كما يلي:
تهيئة مكتبة الارتباط الحيوي
فشل d:\winnt\system32\kernel32.dll. تكون العملية
إنهاء بشكل غير طبيعي.
تحت Windows NT أو كل محطة إطار على سطح المكتب واحد على الأقل مرتبط بها. يستخدم Windows NT كومة ذاكرة خاصة لكافة تطبيقات Windows قيد التشغيل على سطح مكتب. بشكل افتراضي، يستهلك كل كومة الذاكرة المؤقتة الخاصة بسطح المكتب 3 MB من الذاكرة. يحتوي Windows NT حد غير قابلة للتكوين من 48ميغابايت لإنشاء heaps سطح المكتب. وهذا يعني أن الحد الأقصى من المحطات الإطار التي يمكن إنشاؤها على جهاز Windows NT هو 16 (من المحتمل أن يكون أقل نظراً لأن محطة إطار يمكن أن تحتوي على أكثر من سطح المكتب). لزيادة هذا الرقم يمكنك تقليل حجم كومة الذاكرة المؤقتة الخاصة بسطح المكتب الافتراضي عن طريق تحرير التسجيل باستخدام "محرر التسجيل".

تحذير: يمكن استخدام "محرر التسجيل" بطريقة غير صحيحة إلى يسبب مشاكل حقيقية في النظام التي قد تتطلب منك إعادة تثبيت Windows NT لتصحيح هذه. ولا تضمن Microsoft أن تتمكن من حل أية مشاكل الناتجة عن الاستخدام من "محرر التسجيل". استخدام هذه الأداة على مسؤوليتك الخاصة.

تظهر القيمة المسماة تحتاج إلى تحرير ضمن المفتاح التالي:
   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session   Manager\SubSystems				
يجب تحرير "Windows" باسم القيمة. وهو سلسلة REG_SZ. تحرير السلسلة وابحث عن "مقطع المشتركة = 1024 ٣٠٧٢". تعديل هذا قراءة "مقطع المشتركة = 1024, 3072, 512". تحتاج إلى إعادة تشغيل الجهاز هذا التغيير نافذ المفعول. قبل إجراء هذا التغيير, يتم تحديد 3 MB (افتراضي) كومة الذاكرة المؤقتة لسطح مكتب محطة إطار تفاعلية وحجم 512 كيلو بايت للحصول على كافة غير - تفاعلية أسطح المكتب (المعلمة الأولى مهمل ولكن يجب تغيير). يسمح هذا التغيير الإنشاء من تقريباً أقل من 48ميغابايت/512 كيلو بايت أو محطات إطار 96.

ملاحظة: يمكن أن تحتوي محطة إطار على أسطح المكتب متعددة ضمنه. في المناقشة ملقمات "المستخدم لبدء تشغيل" أعلاه، أينما المذكورة محطة إطار من عملية العميل المحلي فإنه يجب اعتبار كنموذج أقصر لـ "محطة إطار و سطح المكتب". الإعداد "تشغيل المستخدم" هو فعلاً تعني لملقمات علم القديمة غير - DCOM كما يجب أن يتم استخدام نادراً ما. تتوقع ملقمات القديمة في أسطح المكتب الخاصة بهم. وبالتالي، لـ MULTIPLEUSE "المستخدم لبدء تشغيل" ملقمات تؤدي كل عملية العميل في سطح مكتب مختلفة داخل محطة إطار نفس عملية خادم جديد ببدء في سطح المكتب/المحطة إطار. للحصول على SINGLEUSE "المستخدم لبدء تشغيل" ملقمات مرة أخرى، الملقم يرث الإطارات المحطة/سطح من عملية العميل.

في Windows NT 4.0 Service Pack 4.0 ، يحاول COM أعد استخدام محطات الإطار. قبل إلى ذلك, إذا تم تعيين ملقم إلى RunAs مستخدم معين وفي حالة تشغيل مثيلات متعددة من عملية الخادم سيحصل على كل عملية محطة إطار الخاصة به. ويوجهنا ذلك إلى محطة إطار تصف قيود أعلاه. في SP4 ، سيحاول COM إنشاء كافة الملقمات RunAs (أي، لا "تنشيط كـ Activator" أو "تشغيل المستخدم") التي يتم تعيين للتشغيل ضمن نفس المستخدم الهوية (أو رمز) في نفس محطة إطار.

هذا يلغي الحاجة إلى ضبط حجم كومة الذاكرة المؤقتة الخاصة بسطح المكتب في هذه الحالات حيث تشغيل عدة عمليات الملقم مع رمز نفس. إذا كان في التكوين الخاص بك يتم تعيين كافة الملقمات إلى RunAs لنفس المستخدم أو مثيلات متعددة من نفس العملية الملقم RunAs تشغيل ، ثم يجب عدم تقليل heapsize سطح المكتب كـ المقترحة في المقالة. من المستحسن أن تتركه بالقيمة الافتراضية (M 3) في هذه الحالة. وهذا لأن ، إذا قمت بتقليل كومة الذاكرة المؤقتة الخاصة بسطح المكتب ثم النظام يمكن إنشاء أكثر من إطار محطات/أسطح; ومع ذلك، تصبح progressively أصغر عدد العمليات التي يمكن تشغيلها في سطح مكتب/محطة إطار.

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

142676كيف يتم تصحيح الأخطاء الشائعة في الملف User32.dll

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 169321 - آخر مراجعة: 07/11/2005 19:06:47 - المراجعة: 2.5

  • Microsoft OLE 4.0
  • kbmt kbapi kbdcom kbenv kbinfo kbinterop kbkernbase kbprogramming kbusage KB169321 KbMtar
تعليقات