2010-09-20 8 views
15

Ich versuche, die aktuell laufende Version von Outlook zu erhalten oder Outlook zu starten, falls es nicht ausgeführt wird, aber ich habe einige Probleme beim Abrufen oder Erstellen der Outlook-Anwendung Objekt in Windows 7. Ich denke, dass es etwas mit den Benutzerrechten zu tun hat, die in Vista und 7 restriktiv sind. Ich arbeite mit Outlook 2010.Erhalte/Erstelle eine Outlook-Anwendung in Windows 7

bearbeiten: Diese Fehler erscheinen nur, wenn ich bereits ein Outlook 2010 habe Instanz gestartet. Wenn Outlook nicht gestartet wird, kann die Anwendung problemlos ausgeführt werden (sie kann eine Outlook-Instanz selbst starten).

Wenn mir jemand sagen kann, wie man die Outlook Application-Version richtig bekommt, wäre das wirklich hilfreich.

Der Code, den ich laufen bin ist ein langer try-catch-Block, der auf auslösende Ausnahmen hält:


try 
{ 
    // create an application instance of Outlook 
    oApp = new Microsoft.Office.Interop.Outlook.Application(); 
} 
catch(System.Exception ex) 
{ 
    try 
    { 
    // get Outlook in another way 
    oApp = Marshal.GetActiveObject("Outlook.Application") as Microsoft.Office.Interop.Outlook.Application; 
    } 
    catch (System.Exception ex2) 
    { 
    // try some other way to get the object 
    oApp = Activator.CreateInstance(Type.GetTypeFromProgID("Outlook.Application")) as Microsoft.Office.Interop.Outlook.Application; 
    } 
} 

Die Anwendung wirft mir die folgenden Ausnahmen:

Wenn ich versuche, ein neues Outlook zu erstellen Anwendungsinstanz:

Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005.

Wenn ich versuche, die Outlook-App-Instanz zu erhalten:

Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))

Wenn ich versuche, eine Instanz durch den Aktivator zu erstellen

Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005.

Thank you!

Antwort

29

Anscheinend wurden diese Fehler ausgelöst, weil ich Outlook und die Anwendung auf verschiedenen Benutzerberechtigungsstufen ausgeführt habe (eine davon als Administrator und die andere als normaler Benutzer).

+3

Andrei Ich habe auch das gleiche Problem. Wie hast du es gelöst? In meinem Fall, selbst wenn die Outlook nicht manuell geöffnet wird es diesen Fehler gibt „Abrufen der COM-Klasse ab Werk für die Komponente mit CLSID {0006F03A-0000-0000-C000-000000000046} konnte aufgrund des folgenden Fehler: 80080005.“ – ANP

+3

ANP, von dem, was ich mich erinnere, wurde dieser Fehler ausgelöst, weil ich Outlook ausgeführt wurde und die Anwendung, die Outlook unter verschiedenen Benutzerrechten zugegriffen hat. Für mich lag das daran, dass ich Visual Studio mit Administratorrechten ausführte und versuchte, Outlook abzurufen, das mit normalen Rechten gestartet wurde (nicht als admin). Entweder das oder es gab einen hängenden Outlook-Prozess, auf den ich nicht zugreifen konnte, weil es von einer anderen Instanz der Anwendung gestartet wurde. – Andrei

+0

wow !!! Danke für das Teilen. Ich hatte ein völlig anderes Problem mit dem gleichen Fehlercode und das ist mehr als wahrscheinlich das genaue Problem! – Keng

1

Es scheint, als ob Ihre Office-Installation beschädigt wurde.

Versuchen Sie, die Installation zu reparieren, indem Sie Setup als Administrator erneut ausführen.

+1

Nein, das hat es nicht gelöst. – Andrei

+0

Kann Outlook manuell gestartet werden, ohne dass ein modales Dialogfeld die Anwendung blockiert? Stellen Sie sicher, dass Sie dies mit demselben Benutzerkonto testen, das Ihre Anwendung verwendet. –

+0

Outlook kann manuell gestartet werden. Diese Fehler werden anscheinend nur angezeigt, wenn Outlook bereits zuvor manuell gestartet wurde. – Andrei

3
  1. Im Startmenü wählen Sie Ausführen
  2. Typ dcomcnfg und klicken Sie auf OK
  3. Komponentendienste Fenster geöffnet wird.
  4. Erweitern Sie die Knoten Komponentendienste -> Arbeitsplatz -> DCOM-Konfiguration.
  5. Klicken Sie mit der rechten Maustaste auf die Anwendung (Outlook Message Attachment) und wählen Sie Eigenschaften.
  6. Klicken Sie auf die Registerkarte Identität, was auch immer erforderlich ist.
  7. Klicken Sie auf „Der interaktive Benutzer“ dann auf OK
+2

können Sie diese Antwort erweitern? Was macht "der interaktive Benutzer"? – chris

+0

Danke @Moustafa - das half –

+0

Diese Lösung funktioniert für mich. Danke Moustafa – Ammad

0

In meinem Fall war es Visual Studio als Administrator lief das Problem verursacht. Wenn ich es als normaler Benutzer lief ich endlich dieses Fehlers losgeworden.

0

Wenn Sie eine eigenständige Anwendung von Visual Studio oder das Debuggen von Visual Studio ausführen, die Office-Produkte verwenden, sollten Sie dieselbe Zugriffsebene für beide haben (Visual Studio und Office-Produkte) und das ist einer der Gründe, warum dieses Problem auftritt, aber ich sehe online, dass so viele Leute dieses Problem beim Initialisieren von Outlook-Objekt in einem Dienst haben. Ich hoffe, dass das Problem für mich auch anderen helfen würde. Bitte folgen Sie den Schritten.

  1. Gehen Sie zur Eingabeaufforderung, geben Sie Folgendes ein und drücken Sie die Eingabetaste. Dies eröffnet Component Services:

    mmc comexp.msc/32

enter image description here

enter image description here

  1. die Knoten Komponentendienste erweitern -> MyComputer -> DCOM-Konfiguration

  2. nun Ihre gewünschte Anwendung findet heraus (In Im vorliegenden Fall Outlook Message Attachment) und die rechte Maustaste auf der Anwendung (Wenn Sie diese Schritte ausgeführt haben, dieses Thema alle Office-Anwendungen im Zusammenhang kann), und wählen Sie Eigenschaften gelöst werden.

  3. Gehen Sie zu Registerkarte Identität und wählen Sie das interaktive Benutzer und drücken Sie OK. Dies sollte Ihr Problem lösen.

enter image description here

Der interaktive Benutzer ist nichts anderes als der angemeldeten Benutzer. Wenn Sie versuchen, über den Dienst auf Office-Produkte zuzugreifen, muss die Zugriffsebene gleich sein. Aus diesem Grund müssen Sie den richtigen Benutzer angeben. Wenn Sie den Dienst auf einem Server ausgeführt werden soll, ohne auf sie angemeldet haben, müssen Sie sicherstellen, dass der Server ein Benutzerkonto hat, die für den Betrieb des Service verwendet wird, sowie laufende Office-Produkte wie in den Eigenschaften als dieser Benutzer angegeben (Bitte Sehen Sie sich das Dialogfeld Eigenschaften an. Wenn Sie mehr über die verschiedenen Arten von Benutzerkonten in diesem Dialogfeld erfahren möchten, lesen Sie den folgenden Microsoft-Link.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms692541%28v=vs.85%29.aspx