Zusätzlich zu @Matthew Wetmores korrekter Antwort ist das Übliche, dass alle COM-Komponenten in dieser DLL registriert werden.
Insbesondere werden zwei Schlüssel (+ Unterschlüssel) in der Windows-Registrierung erstellt.
Betrachten Sie beispielsweise eine DLL:, dao360.dll
die mehrere COM-Objekte enthält. Für jeden ist der erste Schlüssel so etwas wie:
HKLM \ SOFTWARE \ Classes \ DAO.TableDef.36
Für das DAO Table Defintion-Objekt ist der Name des Schlüssels die ProgID des COM-Objekts, auf das sich Programmierer in ihrem Code beziehen würden.
Unter dem Schlüssel befindet sich normalerweise ein einzelner Schlüssel mit einem Standardwert:
HKLM \ SOFTWARE \ Classes \ DAO.TableDef.36 \ CLSID
in diesem Fall:
{00000103-0000-0010-8000-00AA006D2EA4}
Dies ist die Klassen-ID oder CLSID für das COM-Objekt. Sie gibt an, wo sich der zweite Schlüssel befindet:
HKLM \ SOFTWARE \ Classes \ CLSID {00000103-0000-0010-8000-00AA006D2EA4}
Dieser Schlüssel mit seinen Unterschlüsseln und Werten enthält zusätzliche Informationen zum COM-Objekt.
Ein zu beachtender Wert ist der Standardwert unter:
HKLM \ SOFTWARE \ Classes \ Wow6432Node \ CLSID {00000103-0000-0010-8000-00AA006D2EA4} \ InprocServer32
In unserem Beispiel hat es den Dateipfad der exe / dll, die das COM-Objekt hostet:
%CommonProgramFiles%\Microsoft Shared\DAO\dao360.dll
Dies ist der richtige Dateipfad, als regsvr32.exe zum Registrieren dieses COM-Objekts verwendet wurde. Wenn Sie die Datei manuell verschieben, funktioniert das COM-Objekt nicht mehr, da dieser Registrierungswert jetzt auf eine fehlende Datei verweist.
Bevor Sie regsvr32.exe für eine DLL verwenden, verschieben Sie sie an ihren endgültigen Speicherort und verschieben Sie die DLL nach der Registrierung nicht.