Pregunta

Estoy intentando crear una instancia de un objeto COM del Reproductor de Windows Media en mi máquina:

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

Al ejecutar esa última línea, aparece el siguiente error:

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: 

Este mismo código funciona en otras máquinas de desarrollo y máquinas de usuario final. Por alguna razón, solo falla en mi máquina. ¿Cuál podría ser la causa?

¿Fue útil?

Solución

80070002 es un error de Archivo no encontrado.

Creo que a su máquina le falta una dependencia. Intente ejecutar el componente com a través de dependen.exe para ver si tiene instaladas todas las bibliotecas necesarias.

Otros consejos

Bueno, 0x80070002 significa Archivo no encontrado, así que verificaría si la DLL apuntada en el registro COM realmente existe en su máquina

Si el grupo de aplicaciones falla, puede ocurrir este error. Puede verificar su código si hay alguna función o inicialización de objeto que se repita más adelante. Esto puede causar pérdida de memoria y, por último, bloqueo del grupo de aplicaciones

Más información posiblemente útil. Vimos este problema en una aplicación web asp clásica que carga componentes .net. una aplicación estaba bien, otra no. ¿La misma máquina? Entonces, ¿qué da? No recibíamos los errores adecuados al no cargar un componente com, solo el número de error 0x80070002.

Finalmente, esto se solucionó simplemente configurando el grupo de aplicaciones de la aplicación dañada de la misma manera que la aplicación de trabajo. Algo sobre el grupo de aplicaciones significaba que el componente no se podía cargar correctamente, la misma identidad, etc. (iis 6).

Había un montón de números de versiones antiguas en el registro para ese componente, pero el regasmo siempre hace eso, es terrible para limpiar, incluso hemos tenido que escribir una pequeña herramienta para eliminarlos todos cuando se mueve entre los números de versión en máquinas de desarrollo. Pero en este caso, esos números de versión no eran el problema.

Conclusión: parece un problema de permisos, pero ¿qué sé?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top