Problem beim Registrieren eines für Excel geschriebenen COM-Servers, der auf dem Clientcomputer registriert ist (vollständiger Pfad zu mscoree.dll kann nicht festgelegt werden)

8

In dieser vorherigen Frage & lt; Wie bekomme ich COM Server für Excel, das in VB.NET geschrieben und in der Liste der Automatisierungsserver registriert und registriert ist? & gt; Es gibt ein Beispiel für das Erstellen des vollständigen Pfads zu einem Registrierungsschlüssel mit VS 2008. Alles in der vorherigen Antwort funktioniert ordnungsgemäß außer dem vollständigen Pfad, den ich (mithilfe des Registrierungseditors in VS) für mscoree.dll (funktioniert nicht) ( was bedeutet, dass es nichts zu tun scheint.

Der vollständige Registrierungspfad lautet:

HKEY_CLASSES_ROOT \ CLSID \ {my_GUID} \ InprocServer32 \ (Standard)

und der von mir eingestellte Wert ist:

[Systemordner] mscoree.dll

Ich kann alles setzen (einschließlich der vollständigen Pfadkodierung), aber die Einstellung scheint keine Rolle zu spielen und die Registry enthält immer mscoree.dll ohne Pfad.

Ich habe versucht, über VS einen anderen Wert zum Registry-Pfad hinzuzufügen, der korrekt funktioniert, einschließlich des vollständigen Pfades wie von [SystemFolder] angegeben.

Der Grund, warum ich den vollständigen Pfad benötige (wie in der vorherigen Frage erklärt) ist, dass Excel ohne den Pfad einen Fehler erzeugt, wenn der Automatisierungsserver ausgewählt wird, da er mscoree.dll nicht finden kann (interessanterweise obwohl ich einen Fehler bekomme Registrierung funktioniert OK).

Ich mache die Installation über ein Setup-Projekt, das ansonsten gut funktioniert.

Ich installiere auf einem VISTA * 64 System, habe aber den gleichen Fehler auf anderen Betriebssystemen bekommen.

Weiß jemand, was ich falsch mache?

    
user265445 31.03.2010, 14:19
quelle

1 Antwort

1

Ich habe es nicht versucht, aber ich vermute, es hängt damit zusammen, wenn VS.NET den Registrierungsschlüssel "[SystemFolder] mscoree.dll" einfügt. Es funktionierte in der ursprünglichen Post. Es könnte sein, dass VS.NET zuerst die "regasm / regfile" ausgeführt hat und dann diesen Schlüssel mit "[SystemFolder] mscoree.dll"

überschrieben hat

In Ihrem Fall funktioniert es nicht, weil VS.NET zuerst Ihren Registrierungsschlüssel "[SystemFolder] mscoree.dll" in die MSI-Registrierungstabelle einfügt und Ihr Wert dann von den Werten überschrieben wird, die von "regasm / regfile" ausgegeben werden ".

Um auszuschließen, dass VS.NET Ihren Wert überschreibt, denke ich, dass Sie Ihre DLL vsdrpDoNotRegister markieren können. Dann macht VS.NET keine Magie auf Ihrer Registrierungstabelle. Nun, Sie sind alle auf eigene Faust, um die Registrierung korrekt durchzuführen. Wie jedoch das Original sagte, rief VS.NET einfach "regasm / regfile" auf. Warum machst du es nicht selbst? Sobald Sie die REG-Datei von "regasm / regfile your.dll" erhalten, müssen Sie sie nur in die Registrierungstabelle importieren. Klicken Sie mit der rechten Maustaste auf "Registrierung auf dem Zielcomputer" und klicken Sie auf das Menü "Importieren ...". Das ist es. Es ist nicht so schwer. Nachdem Sie Ihre Registrierungsdatei importiert haben, sollten Sie den folgenden Schlüssel sehen

%Vor%

Der Wert sollte weiterhin auf mscoree.dll festgelegt werden. Jetzt können Sie es einfach in [SystemFolder] mscoree.dll ändern.

    
Harvey Kwok 20.12.2010 01:24
quelle