2009-05-26 5 views
0

Ich habe einen Windows-Dienst, der ein Dcom-Objekt mit einer bestimmten GUID A instanziiert.Wie ändere ich eine GUID von DCOM in vb6?

Ich muss dieses DCOM-Objekt durch eine neue Version ersetzen. Wenn ich erstellen und kompilieren meine Ersatz-DCOM-Objekt ist es mit einer GUID B erstellt.

Wie ändere ich die GUID des Ersatz-dcom-Objekts von Guid B zu GuidA?

Antwort

2

Wenn Sie versuchen, die ID auf der "Server" -Seite (die DLL oder Anwendung, die diese bestimmte Klasse veröffentlicht) zu ändern, VB tut dies für Sie, wenn Sie "keine Kompatibilität" in den Projekteigenschaften, "Komponente" wählen Tab.

Wenn Sie versuchen zu ändern, welches Objekt in einem "Client" instanziiert wird (eine DLL oder Anwendung, die eine von einer anderen DLL/App veröffentlichte Klasse verwendet), müssen Sie die Referenz ändern (entweder über die Referenzen oder Komponenten, je nachdem, um was für ein Objekt es sich handelt, so dass Sie auf die neue Version des Servers verweisen (der, der die Klasse mit der aktualisierten GUID veröffentlicht). Das bedeutet, dass die aktuelle Referenz entfernt und ein Verweis auf den neuen Server hinzugefügt wird. Vorausgesetzt, die Namen haben sich nicht geändert, sollte alles andere wie bisher funktionieren, abgesehen von geringfügigen Änderungen der Benutzeroberfläche der Klassen.

Sie haben keinen direkten Zugriff auf die GUIDs in VB6, soweit ich weiß.

0

ich es geschafft, mein Ersatz DCOM-Objekt neu zu kompilieren und von Guid A verwenden ...

  1. aus der Registrierung alle Verweise auf Guid B entfernen
  2. löschen mein Ersatz DCOM-Objekt exe-Datei
  3. Kopieren Sie in der ursprünglichen DCOM eXE-Datei
  4. Benennen Sie die ursprüngliche DCOM eXE-Datei auf den Ersatz Namen
  5. Recompile die vb Projekt

Ich denke, wenn VB die EXE-Datei ersetzt, sucht es nach der GUID und verwendet sie dann für die neu kompilierte Version.

0

Sie sollten Ihre Anwendung (das Ersatz-DCOM-Objekt) so kompilieren, dass sie mit der vorhandenen DLL binär kompatibel ist. Auf diese Weise wird dieselbe GUID erben und die Versionsnummer wird erhöht. wenn du die vorhandene DCOM dll mit dem ersatz überschreiben solltest sollte alles funktionieren.

Zum Beispiel können Sie in VB6 die Binärkompatibilität in den Projektdialogeinstellungen festlegen. Ich bin mir nicht sicher, wo Sie es für C++ setzen, ich denke, die GUIDs sind im Quellcode enthalten.