Registrieren Sie die DLL -Datei auf Windows Server 2008 R2
-
13-10-2019 - |
Frage
Ich versuche, eine COM -DLL -Datei unter Windows Server 2008 R2 zu registrieren. Hier sind die Schritte, die ich unternommen habe:
- Laufen
cmd
als Administrator 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 zuDllRegisterServer
mit Fehlercode fehlgeschlagen0x80040154
. Für weitere Informationen zu diesem Problem suchen Sie online mit dem Fehlercode als Suchbegriff
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 ist das Microsoft Visual C ++ - Neuverteilbare Paket nicht auf dem Zielgerät installiert (oder hat die falsche Version).Laden Sie Microsoft Visual C ++ herunter, das verteilte Paket
- Vielleicht haben Sie das .dll mit Release -Konfiguration nicht erstellt (aber stattdessen mit Debugg)http://www.davidlenihan.com/2008/01/choosing_the_correct_cc_runtim.html
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>