watcher visual net filewatch filesystemwatcher1 c# windows service catia

visual - C#Servicio de Windows COM excepción 80080005 al iniciar la aplicación



filewatch c# (1)

Ahora he encontrado una solución.

Lo encontré en otro foro, donde alguien tenía problemas para ejecutar otra aplicación a través de la web. Por extraño que parezca, esa solución funcionó para mí también.

  1. Haga clic en ejecutar
  2. entrar dcomcnfg
  3. Navegue hacia Servicios de componentes> Computadoras> Mi PC> DComConfig>
  4. Luego encuentre su aplicación, en mi caso "Solicitud de CATIA".
  5. clic derecho> propiedades
  6. Ir a la pestaña "Identidad"
  7. Cambia el usuario que debe ejecutar esta aplicación de "El usuario de lanzamiento" a "El usuario interactivo".

Ahora funciona para mí Todavía no puedo ver el proceso (GetActiveObject) si lo comienzo manualmente primero. Pero al menos el Servicio logra iniciar una nueva instancia sin ningún error.

Creo que esto puede ser útil para muchas personas que encuentran este mensaje de error cuando intentan iniciar una aplicación desde un Servicio de Windows.

Creé un servicio de Windows que intenta iniciar una aplicación (en este caso, CATIA).

Yo uso el siguiente código:

private Application GetApplicationObject(string ProgId) { Application AppObject = null; //Try to get allready open instance of the Application try { AppObject = (Application)Marshal.GetActiveObject(ProgId); } catch { //Create a new instance of the Application instead AppObject = (Application)Activator.CreateInstance(Type.GetTypeFromProgID(ProgId)); } return AppObject; }

Recibo el siguiente error cuando mi Servicio intenta iniciar la aplicación:

System.Runtime.InteropServices.COMException (0x80080005): la recuperación de la fábrica de la clase COM para el componente con CLSID {87FD6F40-E252-11D5-8040-0010B5FA1031} falló debido al siguiente error: 80080005. en System.RuntimeTypeHandle.CreateInstance (tipo RuntimeType, Boolean publicOnly, Boolean noCheck, Boolean & canBeCached, RuntimeMethodHandle & ctor, Boolean & bNeedSecurityCheck) en System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, Boolean fillCache) en System.RuntimeType.CreateInstanceImpl (Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) en System.Activator.CreateInstance (Tipo de tipo, booleano no público) en CATIA.CATIA.GetApplicationObject (String ProgId)

Importante: Cuando ejecuto este código como una aplicación de Windows en lugar de un servicio de Windows todo funciona bien. También traté de iniciar CATIA primero y ejecutarlo en segundo plano, pero mi Servicio no puede detectarlo.

Ejecuto el Servicio con Sistema Local y he marcado la casilla "Interactuar con el escritorio".

Mi ProgId es CATIA.Application, y como dije, funciona cuando lo ejecuto como una aplicación en lugar de un servicio.

¿Alguna idea de qué está causando esto?