سؤال

أحاول إنشاء كائن Windows Media Player COM على جهازي:

Guid mediaPlayerClassId = new Guid("47ac3c2f-7033-4d47-ae81-9c94e566c4cc");
Type mediaPlayerType = Type.GetTypeFromCLSID(mediaPlayerClassId);
Activator.CreateInstance(mediaPlayerType); // <-- this line throws

عند تنفيذ هذا السطر الأخير، أحصل على الخطأ التالي:

System.IO.FileNotFoundException was caught
  Message="Retrieving the COM class factory for component with CLSID {47AC3C2F-7033-4D47-AE81-9C94E566C4CC} failed due to the following error: 80070002."
  Source="mscorlib"
  StackTrace:
       at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
       at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
       at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
       at System.Activator.CreateInstance(Type type, Boolean nonPublic)
       at System.Activator.CreateInstance(Type type)
       at MyStuff.PreviewFile(String filePath) in F:\Trunk\PreviewHandlerHosting\PreviewHandlerHost.cs:line 60
  InnerException: 

يعمل هذا الرمز نفسه على أجهزة المطورين الأخرى وأجهزة المستخدم النهائي.لسبب ما، فشل فقط على جهازي.ماذا يمكن أن يكون السبب؟

هل كانت مفيدة؟

المحلول

80070002 هو خطأ لم يتم العثور على الملف.

أعتقد أن جهازك يفتقد التبعية.حاول تشغيل مكون com من خلال Depends.exe لمعرفة ما إذا كان لديك كافة المكتبات المطلوبة مثبتة.

نصائح أخرى

حسنًا، 0x80070002 يعني أنه لم يتم العثور على الملف، لذا سأتحقق لمعرفة ما إذا كان ملف DLL المشار إليه في تسجيل COM موجودًا بالفعل على جهازك

إذا تعطل تجمع التطبيقات، فقد يحدث هذا الخطأ.يمكنك التحقق من التعليمات البرمجية الخاصة بك إذا كانت هناك أي وظيفة أو تهيئة كائن تتكرر أكثر في النهاية.يمكن أن يتسبب هذا في تسرب الذاكرة وفي آخر تعطل لتجمع التطبيقات

مزيد من المعلومات ربما تكون مفيدة.لقد رأينا هذه المشكلة في تطبيق ويب ASP كلاسيكي يقوم بتحميل مكونات .net.أحد التطبيقات كان جيدًا والآخر لم يكن كذلك.نفس الآلة؟إذن ما الذي يعطي؟لم نتلقى الأخطاء المناسبة حول الفشل في تحميل مكون com، فقط رقم الخطأ 0x80070002.

في النهاية تم إصلاح ذلك عن طريق تعيين مجموعة التطبيقات الخاصة بالتطبيق المعطل على نفس التطبيق العامل.هناك شيء يتعلق بتجميع التطبيقات يعني أنه لا يمكن تحميل المكون بشكل صحيح، نفس الهوية وما إلى ذلك (iis 6).

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

خاتمة:يبدو وكأنه مشكلة أذونات، ولكن ماذا أعرف ..

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