Wyjątek COM usługi C # Windows 80080005 podczas uruchamiania aplikacji

Stworzyłem usługę Windows, która próbuje uruchomić aplikację (w tym przypadku CATIA).

Używam następującego kodu:

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;
        } 

Otrzymuję następujący błąd, gdy moja usługa próbuje uruchomić aplikację:

System.Runtime.InteropServices.COMException (0x80080005): Pobieranie fabryki klasy COM dla komponentu z identyfikatorem CLSID {87FD6F40-E252-11D5-8040-0010B5FA1031} nie powiodło się z powodu następującego błędu: 80080005. at System.RuntimeTypeHandle.CreateInstance (typ RuntimeType, Boolean publicOnly, Boolean noCheck, Boolean & canBeCached, RuntimeMethodHandle & ctor, Boolean & bNeedSecurityCheck) w System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, Boolean fillCache) w System.RuntimeType.CreateInstanceImpl (Boolean publicOnly, Boolean skipVisibilityChecks, Boolean publicConate, Boolean skipVisibilityChecks, Boolean fillCache) w System.Activator.CreateInstance (Typ typu Boolean nonPublic) w CATIA.CATIA.GetApplicationObject (String ProgId)

Ważne: Kiedy uruchamiam ten kod jako aplikację Windows zamiast usługi Windows, wszystko działa prawidłowo. Próbowałem też najpierw uruchomić CATIA i uruchomić go w tle, ale moja usługa nie jest w stanie go złapać.

Używam usługi z systemem lokalnym i zaznaczyłem pole „Interakcja z pulpitem”.

Moje ProgId to CATIA.Application, a jak powiedziałem, działa, gdy uruchamiam go jako aplikację zamiast usługi.

Jakieś pomysły na to, co to powoduje?

questionAnswers(1)

yourAnswerToTheQuestion