Frage

Ich habe die notwendigen Manifeste für meinen COM-Server-DLL und eine Client-Anwendung erstellt Registrierung frei in Windows XP zu arbeiten. Ich habe alle Arten von Kombinationen getestet (mit und ohne Registrierung) und in allen Fällen die Client-Anwendung sieht die Side-by-Side-Version der Bibliothek, wenn die Manifeste vorhanden sind, und die registrierten einen, wenn nicht (oder ein COM-Fehler wenn es keine Registrierung überhaupt). Ich habe auf meiner Windows XP Entwicklungsmaschine getestet, und die Dateien (DLL, EXE-Client und ein Manifest für jeden) gegeben an Mitarbeitern, der auch alles erfolgreich auf ihren eigenen Rechner unter Windows XP laufen hat. Die Manifeste sind externe XML-Dateien, nicht eingebettete Ressourcen. So weit, ist es gut.

Allerdings, wenn ich die Dateien auf einem Windows Server 2003-Computer zu kopieren, funktioniert es nicht. Ich erhalte eine stille Versagen, sondern ein Anwendungsfehler in dem Anwendungsereignisprotokoll (siehe unten). Wenn ich die DLL und entfernen Sie die Manifeste deregistrieren, erhalte ich einen ähnlichen Fehler (silent an der Eingabeaufforderung, aber einen Anwendungsfehler in dem Ereignisprotokoll). Offensichtlich gibt es ein Problem der Registrierung zu finden. Ich habe dies auf jedem Windows Server 2003 Maschine reproduziert ich in unserem Unternehmen zugreifen können. Nach Angaben der Microsoft-Dokumentation auf Side-by-side / anmeldefreien COM, es sollte auf Windows XP arbeiten und höher sowie Windows Server 2003 und höher.

klar sein, der gleiche Client läuft perfekt auf eben diesem Windows Server 2003-Maschinen gegen eine registriert ( dh mit regsvr32) Version desselben COM-DLL, unter die gleichen Anmeldeinformationen ich versuche, für die Registrierung frei COM zu verwenden. Mit anderen Worten, es gibt keine intrinsischen Probleme getarnt als anmeldefreien COM Probleme - das Client und Server arbeiten gut, wenn der Server global in der Registrierung registriert ist

.

Wer irgendwelche Ideen, wie weiter zu untersuchen? Ich bin kein Experte für Windows Server, aber gibt es vielleicht einige Richtlinieneinstellung, die diese Unterstützung geändert werden müßte, um zu ermöglichen? Wenn ich die notwendigen Veränderungen nicht finden können, unsere technischen Support / Infrastruktur Menschen wahrscheinlich wird nicht wahrscheinlich tun es, aber ich kann nicht auf sie verlassen, um das Problem zu erforschen auch, wie sie überschwemmt werden.

Falls es wichtig ist (ich glaube nicht, es sollte, aber man weiß ja nie) die DLL in Delphi 2007 geschrieben, während der Client in Visual C ++ geschrieben ist.

Event Type: Information
Event Source:   Application Error
Event Category: (100)
Event ID:   1004
Date:       5/2/2009
Time:       8:07:45 AM
User:       N/A
Computer:   ***server name****
Description:
Reporting queued error: faulting application ***program name***.exe, version 0.0.0.0, faulting module ***program name***.exe, version 0.0.0.0, fault address 0x0002ac9e.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
War es hilfreich?

Lösung

Eine Sache, zu suchen ist, ob die exe eine interne Manifest hat. In XP ist der exe manifest Suchauftrag externen dann intern. In Server 2003 und später ist die Reihenfolge interne dann extern.

Andere Tipps

Mit einem COM-Server in Delphi 7 erstellt, ich habe ähnliche Probleme gesehen, wenn der COM-Server war nicht registriert und die Client-Anwendung gestartet unter einem eingeschränkten Benutzerkonto, weil Delphi COM-Implementierung immer versucht, die Registrierungsinformationen zu aktualisieren, selbst wenn die DLL Registerserver-Funktion wurde nicht explizit genannt wird.

Um zu sehen, ob dies ein Problem, versuchen die Client-Anwendung auf einem Konto mit uneingeschränkten Administratorrechten ausgeführt werden.

MSDN erwähnt, dass unter Windows 2003, Probleme mit der Registrierung frei COM-Server sollten in einem bestimmten Abschnitt des Systemereignisprotokolls detailliert werden:

  

Bei der Fehlerbehebung Anmeldung frei   COM Fragen, die Ereignisanzeige auf   Windows Server 2003 ist dein Freund.   Wenn Sie Windows XP oder Windows Server 2003   detektiert eine Fehlerkonfiguration wird es   typischerweise zeigt eine Fehlermeldung Feld   für die Anmeldung mit dem Titel Sie haben   ins Leben gerufen und die Nachricht enthält,   „Diese Anwendung konnte nicht gestartet werden   weil die Anwendungskonfiguration   ist falsch. Neu Installieren der   Anwendung könnte das Problem beheben.“Ich   raten, dass, wenn Sie das sehen   Nachricht reproduzieren Sie das Problem auf   Windows Server 2003, wenden die   System Event Log und das Aussehen für Veranstaltungen   von der SideBySide Quelle. Der Grund   Ich schlage vor, Sie nicht, dass Sie das sehen   Windows XP-Ereignisprotokoll ist in diesen Fällen   dass es immer ein enthält   Meldung wie „Generieren Aktivierung   Context fehlgeschlagen für [Pfad] [Anwendung   Dateiname] manifest. Referenzfehler   Meldung: Der Vorgang abgeschlossen   erfolgreich „, das hilft nicht   das Problem identifizieren.    http://msdn.microsoft.com/en-us/library/ ms973913.aspx # rfacomwalk_topic6

Auch, wenn möglich, erklären Sie uns die Dateinamen und den Inhalt der Manifest-Dateien Sie verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top