Warum sollte REGSVR32 keine DLL finden, die eindeutig vorhanden ist?

8

Ich installiere eine benutzerdefinierte Anwendung auf einem brandneuen Windows 2003 Server. Einige DLLs müssen hinzugefügt und registriert werden, und ich habe sie auf den Server im Ordner C: \ WINDOWS \ System32 kopiert. Dort waren sie schon immer, als die Anwendung unter Windows NT und 2000 ausgeführt wurde .

Wenn ich jedoch versuche, sie zu registrieren, indem ich:

regsvr32 c: \ windows \ system32 \ nameoflibrary.dll

Es gibt zurück:

LoadLibrary("c:\windows\system32\nameoflibrary.dll") failed - 
The specified module could not be found.

Die DLL ist jedoch genau dort. Ich kann es sehen. Wenn ich den Pfad in den Windows Explorer kopiere und versuche, ihn auszuführen, wird mir mitgeteilt, dass ich keine DLL ausführen kann, sodass ich weiß, dass sie vorhanden ist. Eine kleine Komplikation ist, dass die DLLs in VB5 erstellt wurden - aber die VB5-Laufzeit ist auf dem Server installiert, sodass dies kein Problem sein sollte.

Irgendwelche Ideen?

Cyberherbalist
quelle
Ist dies ein 64-Bit-Windows 2003-Server?
Jscott
Nein, es ist 32-Bit.
Cyberherbalist

Antworten:

6

Möglicherweise fehlt ein abhängiges Modul. Sie müssen sich den getlasterror-Code ansehen, um festzustellen, warum das Modul nicht gefunden wurde.

Jim B.
quelle
Ja. Ein Modul, das von der Hauptanwendung installiert werden sollte, wurde nicht installiert. Sobald dies korrigiert wurde, wurden die beiden DLLs korrekt registriert.
Cyberherbalist
7

Jim B. ist wahrscheinlich richtig. Holen Sie sich DependencyWalker und laden Sie {nameoflibrary.dll} - es zeigt Ihnen, welche abhängige DLL fehlt.

DougN
quelle
Die aktualisierte Methode besteht darin, dumpbin.exe aus dem Bin-Verzeichnis von Visual Studio zu verwenden:dumpbin /dependents <file.exe/dll>
hLk