Frage

Ich versuche, eine COM -DLL -Datei unter Windows Server 2008 R2 zu registrieren. Hier sind die Schritte, die ich unternommen habe:

  1. Laufen cmd als Administrator
  2. c:\windows\system32\regsvr32.exe c:\tempdl\temp12.dll

Wenn ich diesen Befehl ausführe, erhalte ich diesen Fehler:

Das Modul temp12.dll Laden fehlgeschlagen. Stellen Sie sicher .DLL Dateien. Das ausgewählte Module kann nicht gefunden werden.

Ich konnte die gleiche DLL -Datei unter Windows 2000 registrieren.

Ich habe es auch versucht

c:\windows\syswow64\regsvr32 "c:\tempdl\temp12.dll"

Und ich habe diesen Fehler bekommen:

das Modul c:\tempdl\temp12.dll wurde geladen, aber der Anruf zu DllRegisterServer mit Fehlercode fehlgeschlagen 0x80040154. Für weitere Informationen zu diesem Problem suchen Sie online mit dem Fehlercode als Suchbegriff

War es hilfreich?

Lösung

Dies ist der Fehler, den Sie erhalten, wenn die DLL selbst ein anderer COM -Server zuerst registriert wird oder eine Abhängigkeit von einer anderen DLL hat, die nicht verfügbar ist. Das REGSVR32.exe -Tool macht nur sehr wenig, um die DLL zu laden, die im Befehlszeilenargument übergeben wird. Anschließend ermitteln Sie den Einstiegspunkt für Dllregiererver () in der DLL. Und ruft es auf, es dem COM -Server zu überlassen, sich selbst zu registrieren.

Was das Der Code ist ziemlich unbeschreiblich. Die Diagnose, die Sie erhalten haben, ist jedoch ziemlich selbstverständlich aus dem Fehlercode, aus irgendeinem Grund benötigt dieser COM-Server eine andere, die zuerst registriert werden muss. Die Fehlermeldung ist beschissen, sie sagt es Ihnen nicht was Anderer Server, den es benötigt. Ein trauriger Nebeneffekt der Art und Weise, wie COM-Fehlerbehandlung funktioniert.

Um dies zu beheben, verwenden Sie das Procmon -Tool von Syssinternals. Es zeigt Ihnen, welche Registrierungsschlüssel regsvr32.exe (eigentlich: COM -Server) öffnet, um den Server zu finden. Suchen Sie nach Zugriff auf den CLSID -Schlüssel. Das gibt Ihnen einen Hinweis, wonach {Guid} es sucht. Das sagt Ihnen die Server -DLL immer noch nicht ganz. Der Taste InProcserver32 hat den DLL -Pfad.

Andere Tipps

Möglicherweise müssen Sie diese DLL mit der 32 -Bit -Version von registrieren regsvr32.exe:

c:\windows\syswow64\regsvr32 c:\tempdl\temp12.dll

Fehler 0x80040154 ist COMs Regdb_E_Classnotreg, was "Klasse nicht registriert" bedeutet. Grundsätzlich wird eine COM -Klasse in der Installationsregistrierung nicht deklariert.

Wenn Sie diesen Fehler erhalten, wenn Sie versuchen, eine DLL zu registrieren Ein weiterer COM Server (DLL oder EXE), das in dieser Installation fehlt oder nicht registriert wird.

Wenn Sie keinen Zugriff auf die ursprüngliche DLL -Quelle haben, würde ich vorschlagen, Syssinternal's zu verwenden Prozessmonitor Tool zum Verfolgen von COM -Registrierungs -Lookups (es gibt ein einfacheres Regmon -Tool, aber es funktioniert möglicherweise nicht mehr).

Sie sollten einen Filter in den Arbeitsprozess (hier: regsvr32.exe) setzen, um nur das zu erfassen, was interessant ist. Dann sollten Sie nach Abfragen auf hkey_classes_root [a suchen progid, eine Zeichenfolge], die fehlschlägt (z.

PS: Leider kann es viele Dinge geben, die an einem perfekt funktionierenden Windows -System scheinbar zu sein scheinen, sodass Sie alle Fehler sorgfältig studieren müssen. Viel Glück :-)

Ich habe ein ähnliches Problem gefunden, als ich mein ActiveX (OCX) in Windows Server 2008 R2. registriert habe, um dies zu lösen, die ich verwendet habe http://www.chestysoft.com/dllregsvr/default.asp Tool. Es gibt ein Abhängigkeitsproblem mit meinem OCX, daher erhalte ich "das Modul temp12.dll nicht laden. Stellen Sie sicher, dass die Binärdatei auf dem angegebenen Pfad gespeichert wird, oder debütieren Sie, um auf Probleme mit den binären oder abhängigen .dll -Dateien zu überprüfen. Das angegebene Modul konnte nicht gefunden werden "Fehlermeldung. Wenn Sie versuchen, Ihr OCX mit diesem Tool zu registrieren : windows und es ist erledigt. Nachdem ich meine OCX erfolgreich registriere.

Möglicherweise müssen Sie ATL installieren, wenn Ihre COM -Objekte ATL verwenden, wie in diesem KB -Artikel beschrieben:

http://support.microsoft.com/kb/201191

Diese Bibliotheken müssen wahrscheinlich von Entwicklern geliefert werden, um die richtige Version zu gewährleisten.

Das muss geschehen.

Sie müssen Ihre DLL kopieren, bei der Sie sich registrieren möchten: C: Windows Sywow64

Geben Sie dann im Dialog mit Ausführen dieses in: ein:C:\Windows\SysWOW64\regsvr32.exe c:\windows\system32\YourDLL.dll

Und Sie erhalten die Nachricht:

Dllregiererver in C: Windows System32 yourdll.dll gelang es.

Sie benötigen den vollständigen Weg zum Regsvr32, also %windeir $ system32 regsvr32 <*. Dll>

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