Kann DLL außerhalb des enthaltenden Ordners nicht registrieren / laden

464
Luke

Ich habe eine Anwendung (x64), die eine Drittanbieter-Laufzeitumgebung verwendet, und die Anwendung hat Probleme mit dem Laden dieser Laufzeitumgebung über ihre DLLs (auch x64).

Der Windows Installer hat Schwierigkeiten, diese DLLs zu registrieren (vermutlich aus einem ähnlichen Grund), und daher habe ich die Registrierung der DLLs mit regsvr32 getestet und dabei ein interessantes Verhalten gefunden. Ich kann die DLLs dazu bringen, sich bei regsvr32 erfolgreich zu registrieren und die Registrierung aufzuheben (ich kann sie in der Registrierung unter CLSIDs hinterher finden), aber nur wenn ich regsvr32 aus dem Ordner heraus ausführt, werden die DLLs gespeichert. ... \ outer \ dlls \ binary.dll) innerhalb des Ordners, in dem sie gespeichert sind, wird sie trotzdem erfolgreich registriert. Ich habe es mit einem vollständigen Pfad und Teilpfaden versucht, von etwa 4 bis zu 1 Ebenen oberhalb des Pfads, und alle versagten.

Der Fehler, mit dem immer zurückkommt, ist "Ungültiger Zugriff auf einen Speicherort". Das ist nur vage genug, um die Quelle von sehr schwer zu finden.

Hat jemand Erfahrung mit diesem Problem? Weiß jemand, was die Ursache sein könnte? Seltsam, dass es innerhalb des Ordners funktioniert, aber nicht von irgendwo anders. Ich kann nur annehmen, dass es Umweltprobleme oder Korruption gibt, da ich andere Maschinen habe, bei denen überhaupt kein Problem besteht. Ich habe das .NET-Reparaturtool ausgeführt, aber es schien keinen Unterschied zu machen.

0
Ich bin verwirrt. Sie erwähnen, dass Sie das .NET Repair Tool ausgeführt haben, aber Sie sollten `regsvr32` nicht zum Registrieren einer .NET-Bibliothek verwenden.` Regsvr32` ist normalerweise auf eine Windows COM-Bibliothek beschränkt. Bitte klären Sie, warum Sie das .NET Repair Tool ausführen. Ramhound vor 6 Jahren 1
Die Laufzeitumgebung kann von .NET-Anwendungen verwendet werden, aber ich glaube, dass dies C ++ - Binärdateien sind Luke vor 6 Jahren 0
@ Ramhound Entschuldigung, ich habe das nicht klargestellt. Ich merke jetzt, wie seltsam es klingt. Ich habe gerade alles ausprobiert und dachte, es könnte sich um ein .NET-Problem handeln. Luke vor 6 Jahren 0
Sie "registrieren" nicht nur beliebige DLLs. Wie @ Ramhound sagte, ist regsvr32 [* nur * bedeutsam für native COM] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms683954.aspx), das [beliebigen Code ausführen kann] ( https://msdn.microsoft.com/en-us/library/windows/desktop/ms682162.aspx), das diese Ausnahme auslösen kann. [Basismodule] (https://msdn.microsoft.com/de-de/library/windows/desktop/ms684175.aspx) (C-Export denken) und [.NET-Assemblys] (https://msdn.microsoft.com) /en-us/library/system.reflection.assembly.load.aspx) * sind * völlig * verschieden und enthalten normalerweise nicht regsvr32. Bob vor 6 Jahren 0
Sie sollten (a) wenn möglich die beteiligten Bibliotheken benennen, (b) wenn möglich die konsumierende Anwendung benennen und (c) alle Fehler angeben, die Sie möglicherweise vom Installationsprogramm erhalten haben. Weitere Informationen zur Umgebung sind ebenfalls hilfreich. Andernfalls wird jeder vermutlich nach falschen Annahmen arbeiten. Bob vor 6 Jahren 0
@Bob Die Laufzeit ist SAP Crystal Reports-Laufzeit für .NET 4.0. Ich verstehe, dass dies COM-DLLs sind. Das Installationsprogramm kann sie während des Setups nicht mit "Fehler 1904" registrieren Registrierung fehlgeschlagen "und HRESULT -2147023898. Luke vor 6 Jahren 0

0 Antworten auf die Frage