سؤال

ولقد خلق قوائم الشحن اللازمة لبلدي DLL COM الخادم وتطبيق عميل للعمل خالية من تسجيل في نظام التشغيل Windows XP. لقد اختبرت جميع أنواع تركيبات (مع وبدون تسجيل) وفي جميع الحالات تطبيق العميل يرى النسخة جنبا إلى جنب من المكتبة إذا كان يتظاهر موجودة، وتسجيل واحد إن لم يكن (أو خطأ COM إذا لم يكن هناك تسجيل على الإطلاق). لقد اختبرت على آلة تطوير ويندوز XP، ونظرا للملفات (DLL، EXE العميل واضح واحد لكل منها) لزملاء العمل، الذين قد أيضا تشغيل كل شيء بنجاح على أجهزة ويندوز XP الخاصة بهم. وكشوف هي ملفات XML الخارجية، وليس جزءا لا يتجزأ من الموارد. حتى الان جيدة جدا.

ولكن، عندما كنت نسخ الملفات إلى جهاز Windows Server 2003 أو أنها لا تعمل. أحصل على فشل صامتا، ولكن خطأ التطبيق في سجل أحداث التطبيق (انظر أدناه). إذا كنت إلغاء تسجيل DLL وإزالة كشوف، وأحصل على خطأ مماثل (صامت في موجه الأوامر، ولكن خطأ التطبيق في سجل الأحداث). ومن الواضح أن هناك مشكلة في العثور على التسجيل. لقد استنسخ هذا على كل آلة ويندوز سيرفر 2003 أستطيع الوصول في شركتنا. استنادا إلى وثائق مايكروسوفت على جنبا إلى جنب / خالية من تسجيل COM، من المفترض أن تعمل على نظام التشغيل Windows XP وفي وقت لاحق، و Windows Server 2003 و في وقت لاحق.

لنكون واضحين، يعمل نفس العميل تماما على تلك نفس ويندوز سيرفر آلات 2003 ضد <م> مسجلة (<م> أي استخدام REGSVR32) نسخة من نفس DLL COM، تحت صلاحيات الدخول نفس أحاول استخدام لCOM خالية من التسجيل. وبعبارة أخرى، ليست هناك قضايا جوهرية يتنكر في مشاكل COM خالية من التصنيع - هذا العميل والخادم يعمل بشكل جيد عندما يتم تسجيل الملقم عالميا في التسجيل

.

وأي شخص يحصل على أي أفكار لكيفية مواصلة التحقيق؟ أنا لست خبيرا على Windows Server، ولكن هناك ربما بعض وضع السياسات التي من شأنها أن تحتاج إلى تغيير لتمكين هذا الدعم؟ اذا كنت استطيع تحديد التغييرات اللازمة، لدينا التكنولوجيا الناس الدعم / البنية التحتية وربما ليس لديهم ربما يفعل ذلك، ولكن أنا لا يمكن الاعتماد عليها للبحث عن هذه القضية في غاية وقد امتلأت فيها.

في حالة يهم (أنا لا أعتقد أنه ينبغي، ولكنك لا تعرف أبدا) يتم كتابة DLL في دلفي 2007، بينما هو مكتوب العميل في Visual C ++.

Event Type: Information
Event Source:   Application Error
Event Category: (100)
Event ID:   1004
Date:       5/2/2009
Time:       8:07:45 AM
User:       N/A
Computer:   ***server name****
Description:
Reporting queued error: faulting application ***program name***.exe, version 0.0.0.0, faulting module ***program name***.exe, version 0.0.0.0, fault address 0x0002ac9e.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
هل كانت مفيدة؟

المحلول

وشيء واحد هو للبحث عن أنه سواء إكس لديه واضح الداخلي. في XP، إكس اضح ترتيب البحث الخارجي ثم الداخلي. في Server 2003 و في وقت لاحق، وأمر الداخلي ثم الخارجي.

نصائح أخرى

ومع خادم COM التي تم إنشاؤها في دلفي 7، لقد رأيت مشاكل مماثلة إذا كان خادم COM غير مسجل وبدأ تطبيق العميل تحت حساب مستخدم مقيد، لأن تنفيذ COM دلفي حاول دائما لتحديث معلومات التسجيل، حتى عندما يكون في DLL وظيفة RegisterServer لا يسمى صراحة.

لمعرفة ما إذا كان هذا هو المشكلة، محاولة لتشغيل التطبيق العميل على حساب مع امتيازات إدارية غير مقيدة.

وMSDN يذكر، أنه في ظل ويندوز 2003، ومشاكل مع ملقمات COM تسجيل الحرة يجب أن تكون مفصلة في قسم معين من سجل أحداث النظام:

<اقتباس فقرة>   

عند استكشاف الأخطاء وإصلاحها خالية من تسجيل   قضايا COM، عارض الأحداث على   ويندوز سيرفر 2003 هو صديقك.   عند Windows XP أو Windows Server 2003   بالكشف عن خطأ في تكوين وسوف   تظهر عادة مربع رسالة خطأ   تحت عنوان لتطبيق لديك   أطلقت ويحتوي على الرسالة   "فشل هذا التطبيق لبدء   لأن تكوين التطبيق   غير صحيح. إعادة تثبيت   التطبيق قد حل هذه المشكلة ". I   ننصح بأن كلما رأيت هذا   الرسالة التي تتكاثر المشكلة على   Windows Server 2003 أو استشارة   نظام سجل الأحداث ونظرة للأحداث   من المصدر SideBySide. السبب   أنا لا أقترح عليك أن ننظر إلى   ويندوز XP سجل الأحداث في هذه الحالات هو   أنه سوف تحتوي دائما على   رسالة مثل "إنشاء التنشيط   فشل سياق [مسار] [التطبيق   اسم الملف] ملفات .manifest. خطأ إشارة   رسالة: إكمال العملية   بنجاح "، والذي لا يساعد   حدد المشكلة.    http://msdn.microsoft.com/en-us/library/ ms973913.aspx # rfacomwalk_topic6

وأيضا، إذا كان ذلك ممكنا، ويخبرنا عن أسماء الملفات ومحتويات ملفات البيان الذي تستخدمه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top