Anmeldefreies COM funktioniert nicht auf Windows Server 2003
-
05-07-2019 - |
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.
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.