Da diese Frage mit "vb.net" gekennzeichnet ist, muss ich mich fragen, warum Sie versuchen, eine in VB.NET erstellte DLL zu registrieren. Zur Verwendung mit regsvr32muss eine DLL die Funktionen DllRegisterServerund exportieren DllUnregisterServer. Die überwiegende Mehrheit der von Ihnen erstellten DLLs ist überhaupt nicht registriert.
Cody Gray
12
Was meinst du damit funktioniert nicht oder ist nicht nützlich? Erhalten Sie eine Fehlermeldung? Was sagt es?
Cody Gray
Antworten:
68
Geben Sie regsvr32 name.dllin die Eingabeaufforderung (in erweiterten Modus ausgeführt!) Und drücken Sie „Enter“ . Beachten Sie, dass name.dlldies durch den Namen der DLL ersetzt werden sollte, die Sie registrieren möchten. Wenn Sie beispielsweise die Datei iexplore.dll registrieren möchten, geben Sie ein regsvr32 iexplore.dll.
regsvr32Pfad der DLL-Datei mit Dateinamen und Erweiterung und drücken Sie die Eingabetaste
RK Sharma
202
Nun, Sie geben nicht an, ob es sich um eine 32- oder 64-Bit-DLL handelt, und Sie geben die Fehlermeldung nicht an, aber ich vermute, dass es sich um dasselbe Problem handelt, wie in diesem KB-Artikel beschrieben: Fehlermeldung beim Ausführen von Regsvr32.exe unter 64-Bit-Windows
Zitat aus diesem Artikel:
Dieses Verhalten tritt auf, weil die Datei Regsvr32.exe im Ordner System32 eine 64-Bit-Version ist. Wenn Sie Regsvr32 ausführen, um eine DLL zu registrieren, verwenden Sie standardmäßig die 64-Bit-Version.
Lösung aus diesem Artikel:
Führen Sie Regsvr32.exe im Ordner% SystemRoot% \ Syswow64 aus, um dieses Problem zu beheben. Geben Sie beispielsweise die folgenden Befehle ein, um die DLL zu registrieren:
cd \windows\syswow64regsvr32 c:\filename.dll
Dies sollte wirklich die richtige Antwort sein. Ich kann verstehen, dass in seinem ursprünglichen Beitrag die Syntax falsch war, aber Rajkumar kommentierte, dass er eine Fehlermeldung erhielt, selbst wenn er die richtige Syntax verwendete. Dies dauert zwei Schritte, um die richtige Antwort für jemanden zu finden, der statt eines sucht. Zuerst zu der als richtig ausgewählten Antwort, dann der Kommentarkette folgen und in diesem Beitrag landen.
Rob
102
Wenn die DLL 32 Bit ist:
Kopieren Sie die DLL nach C: \ Windows \ SysWoW64 \
In einer Eingabeaufforderung mit erhöhten Rechten :%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll
Wenn die DLL 64 Bit ist:
Kopieren Sie die DLL nach C: \ Windows \ System32 \
In einer Eingabeaufforderung mit erhöhten Rechten:%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll
Ich weiß, es scheint falsch herum zu sein, aber so funktioniert es. Sehen:
http://support.microsoft.com/kb/249873
Zitat: "Hinweis Auf einer 64-Bit-Version eines Windows-Betriebssystems gibt es zwei Versionen der Regsv32.exe-Datei:
Die 64-Bit-Version lautet% systemroot% \ System32 \ regsvr32.exe.
Die 32-Bit-Version lautet% systemroot% \ SysWoW64 \ regsvr32.exe.
"
+1 für "Ich weiß, es scheint falsch herum zu sein, aber so funktioniert es" mit dem Link zu support.microsoft.com ... ohne den Link ist es kaum zu glauben.
Trevor Boyd Smith
6
"In erhöhten cmd" ist sehr wichtig !!
Shindigo
4
Ich glaube nicht, dass wir es in den Ordner system32 oder syswow64 kopieren müssen. Registrieren Sie die Datei einfach, wo immer sie sich befindet.
Nikos
30
Auf einem x64-System ist system32 für 64 Bit und syswow64 für 32 Bit (nicht umgekehrt, wie in einer anderen Antwort angegeben). WOW (Windows unter Windows) ist das 32-Bit-Subsystem, das unter dem 64-Bit-Subsystem ausgeführt wird.
Es ist ein Chaos in Bezug auf die Benennung und dient nur zur Verwirrung, aber so ist es.
Nochmal ...
syswow64 ist 32 Bit, NICHT 64 Bit.
system32 ist 64 Bit, NICHT 32 Bit.
In jedem dieser Verzeichnisse befindet sich ein regsrv32. Einer ist 64 Bit und der andere ist 32 Bit. Dies gilt auch für odbcad32 und et al. (Wenn Sie 32-Bit- ODBC- Treiber anzeigen möchten, die nicht mit dem Standard-Odbcad32 in System32 angezeigt werden, der 64-Bit ist.)
Wenn Sie die Datei filename.dll bereits in den Ordner syswow64 kopiert haben und das Arbeitsverzeichnis in der Eingabeaufforderung in syswow64 ändern, ist "c: \" in "regsvr32 c: \ filename.dll" nicht erforderlich. Kurz gesagt, "regsvr32 c: \ filename.dll" sollte "regsvr32 filename.dll" lauten
Josh McKearin
6
Wenn die DLL 32 Bit ist:
Kopieren Sie die DLL nach C: \ Windows \ SysWoW64 \
Alles hier versagte als falscher Weg. Dann erinnerte ich mich an einen Trick aus den alten Win95-Tagen. Öffnen Sie den Programmordner, in dem sich die DLL befindet, öffnen Sie C: / Windows / System32, scrollen Sie nach unten zu regsvr32 und ziehen Sie die DLL aus dem Programmordner auf rgsrver32. Boom, fertig.
Dies funktioniert, kann jedoch problematisch sein, wenn Sie dies als Administrator ausführen müssen.
Workabyte
3
Die Fehlermeldung zu kennen, wäre ziemlich wertvoll. Es soll Informationen liefern, auch wenn es für Sie keinen Sinn ergibt, für uns. Da ich gezwungen bin zu raten, würde ich sagen, dass die DLL ein 32-Bit-DirectX-Filter ist. In diesem Fall sollte dies die richtige Vorgehensweise sein:
cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax
Dies muss an einer Eingabeaufforderung mit erhöhten Rechten ausgeführt werden, damit die Benutzerkontensteuerung den erforderlichen Registrierungszugriff nicht stoppen kann. Stellen Sie weitere Fragen dazu auf superuser.com
Ich habe gerade diese extrem einfache Methode getestet und sie funktioniert einwandfrei. Ich verwende jedoch das integrierte Administratorkonto, sodass ich nicht durch die Rahmen springen muss, um erhöhte Berechtigungen zu erhalten.
Die folgende Batchdatei entlastet den Benutzer von der Notwendigkeit, Dateien in Systemordner zu verschieben. Es bleibt auch Windows überlassen, die richtige Version von anzuwenden Regsvr32.
ANLEITUNG:
Öffnen Sie in dem Ordner, der die Bibliothek ( -.dlloder -.ax) Datei enthält, die Sie registrieren möchten, eine neue Textdatei und fügen Sie eine der folgenden Routinen ein:
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS
copy %1 C:\Windows\System32
regsvr32 "%nx1"
echo END BATCH FILE
pause
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS
copy %1 C:\Windows\SysWOW64
regsvr32 "%nx1"
echo END BATCH FILE
pause
Speichern Sie Ihre neue Textdatei als batch ( -.bat) -Datei. Ziehen Sie dann einfach Ihre -.dlloder -.ax-Datei per Drag & Drop über die Batch-Datei.
Wenn die Benutzerkontensteuerung Ihnen nicht die Möglichkeit bietet, die Batchdatei als Administrator auszuführen, müssen Sie möglicherweise die Berechtigungen manuell erhöhen (Anweisungen gelten für Windows 7):
Klicken Sie mit der rechten Maustaste auf die Batchdatei.
Wählen Sie Create shortcut;
Klicken Sie mit der rechten Maustaste auf die Verknüpfung.
Wählen Sie Properties;
Klicken Sie auf die CompatibilityRegisterkarte.
Aktivieren Sie das Kontrollkästchen Run this program as administrator.
Ziehen Sie Ihre -.dlloder -.ax-Datei per Drag & Drop auf die neue Verknüpfung anstelle der Batchdatei.
Das war's . Ich wählte COPYstatt MOVEden Ausfall eines UAC-bezogenen Follow-up - Versuchs (en) zu verhindern. Nach erfolgreicher Registrierung sollte die ursprüngliche Bibliotheksdatei ( -.dlloder ) gelöscht -.axwerden.
Machen Sie sich keine Sorgen über Kopien, die durch vorherige Durchläufe in den Systemordner ( C:\Windows\System32oder C:\Windows\SysWOW64) erstellt wurden. Diese werden jedes Mal überschrieben, wenn Sie die Batchdatei ausführen.
Sofern Sie nicht die falsche Batchdatei ausgeführt haben , möchten Sie in diesem Fall wahrscheinlich die in den falschen Systemordner ( C:\Windows\System32oderC:\Windows\SysWOW64 ) erstellte Kopie löschen, bevor Sie die richtige Batchdatei ausführen, ... oder ...
Helfen Sie Windows bei der Auswahl der richtigen Bibliotheksdatei für die Registrierung, indem Sie den Verzeichnisspeicherort vollständig qualifizieren.
Kopieren Sie aus der rechten Batchdatei den Pfad des Systemordners
Wenn 64-Bit: C:\Windows\System32
Wenn 32-Bit: C:\Windows\SysWOW64
Fügen Sie es so in die nächste Zeile ein, dass es vorangestellt ist %nx1
Wenn 64-Bit: regsvr32 "C:\Windows\System32\%nx1"
Wenn 32-Bit: regsvr32 "C:\Windows\SysWOW64\%nx1"
Fügen Sie den Pfad in Anführungszeichen ein
Fügen Sie einen Backslash ein, um ihn %nx1vom Systemordnerpfad zu trennen
oder ...
Führen Sie diese Schrotflinten-Batch-Datei aus, die (in der Reihenfolge) ausgeführt wird:
Führen Sie eine Bereinigung abgebrochener Registrierungsprozesse durch
Stornieren Sie alle Registrierungsvorgänge, die von Ihrer Bibliotheksdatei ausgeführt wurden.
Löschen Sie alle Kopien Ihrer Bibliotheksdatei, die in einem der Systemordner gespeichert wurden.
Halten Sie an, damit Sie die Batchdatei an dieser Stelle beenden können (und führen Sie eine andere aus, wenn Sie möchten).
Versuchen Sie die 64-Bit-Installation in Ihrer Bibliotheksdatei
Kopieren Sie Ihre Bibliotheksdatei nach C:\Windows\System32;
Registrieren Sie Ihre Bibliotheksdatei als 64-Bit-Prozess.
Pause, damit Sie die Batchdatei an dieser Stelle beenden können.
64-Bit-Installation rückgängig machen
Stornieren Sie die Registrierung Ihrer Bibliotheksdatei als 64-Bit-Prozess.
Löschen Sie Ihre Bibliotheksdatei aus C:\Windows\System32;
Halten Sie an, damit Sie die Batchdatei an dieser Stelle beenden können (und führen Sie eine andere aus, wenn Sie möchten).
Versuchen Sie eine 32-Bit-Installation in Ihrer Bibliotheksdatei
Kopieren Sie Ihre Bibliotheksdatei nach C:\Windows\SystemWOW64
Registrieren Sie Ihre Bibliotheksdatei als 32-Bit-Prozess.
Pause, damit Sie die Batchdatei an dieser Stelle beenden können.
Löschen Sie die nicht registrierte Originalkopie der Bibliotheksdatei
Run as administratorist ausgegraut, als ich eine Verknüpfung für die Bat-Datei erstellt habe. Ich bin als Administrator angemeldet. Auch ist es %nx1oder %n1?
Jon Grah
3
In Windows 7 gibt es einen Unterschied. Wenn Sie sich als Administrator anmelden, ist dies nicht der Fall die gleichen Rechte wie beim Ausführen eines Programms als Administrator.
Gehen Sie zu Start - Alle Programme - Zubehör. Klicken Sie mit der rechten Maustaste auf das Befehlsfenster und wählen Sie "Als Administrator ausführen". Registrieren Sie nun die DLL normal über: regsrvr32 xxx.dll
Ein Teil der Verwirrung in Bezug auf regsvr32 besteht darin, dass sich in 64-Bit-Fenstern Name und Pfad nicht geändert haben, jetzt jedoch 64-Bit-DLLs registriert werden. Das 32-Bit-Register regsvr32 ist in SysWOW64 vorhanden, einem Namen, der anscheinend 64-Bit-Anwendungen darstellt. Das WOW64 im Namen bezieht sich jedoch auf Windows unter Windows 64 oder expliziter auf Windows 32-Bit unter Windows 64-Bit. Wenn Sie es so sehen, macht der Name Sinn, obwohl er in diesem Zusammenhang verwirrend ist.
Ich kann meine Originalquelle nicht in einem MSDN-Blog finden, aber in diesem Wikipedia-Artikel http://en.wikipedia.org/wiki/WoW64 wird darauf verwiesen
So habe ich dieses Problem auf einem Win7 x64-Computer behoben:
1 - Fehlermeldung:
"CoCreateInstance () fehlgeschlagen Bitte überprüfen Sie Ihre Registrierungseinträge CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} und stellen Sie sicher, dass Sie als Administrator angemeldet sind."
2 - Fixverfahren:
Starten / geben Sie cmd / RightMouse ein. Klicken Sie auf cmd.exe und wählen Sie "Als Administrator ausführen".
Typ: regsvr32 / s C: \ Programme \ Autodesk \ 3ds Max Design 2015 \ atl.dll regsvr32 / s C: \ Programme \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
regsvr32
muss eine DLL die FunktionenDllRegisterServer
und exportierenDllUnregisterServer
. Die überwiegende Mehrheit der von Ihnen erstellten DLLs ist überhaupt nicht registriert.Antworten:
Geben Sie
regsvr32 name.dll
in die Eingabeaufforderung (in erweiterten Modus ausgeführt!) Und drücken Sie „Enter“ . Beachten Sie, dassname.dll
dies durch den Namen der DLL ersetzt werden sollte, die Sie registrieren möchten. Wenn Sie beispielsweise die Datei iexplore.dll registrieren möchten, geben Sie einregsvr32 iexplore.dll
.quelle
regsvr32
Pfad der DLL-Datei mit Dateinamen und Erweiterung und drücken Sie die EingabetasteNun, Sie geben nicht an, ob es sich um eine 32- oder 64-Bit-DLL handelt, und Sie geben die Fehlermeldung nicht an, aber ich vermute, dass es sich um dasselbe Problem handelt, wie in diesem KB-Artikel beschrieben: Fehlermeldung beim Ausführen von Regsvr32.exe unter 64-Bit-Windows
Zitat aus diesem Artikel:
Lösung aus diesem Artikel:
quelle
Wenn die DLL 32 Bit ist:
Kopieren Sie die DLL nach C: \ Windows \ SysWoW64 \
In einer Eingabeaufforderung mit erhöhten Rechten :
%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll
Wenn die DLL 64 Bit ist:
Kopieren Sie die DLL nach C: \ Windows \ System32 \
In einer Eingabeaufforderung mit erhöhten Rechten:
%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll
Ich weiß, es scheint falsch herum zu sein, aber so funktioniert es. Sehen:
http://support.microsoft.com/kb/249873
Zitat: "Hinweis Auf einer 64-Bit-Version eines Windows-Betriebssystems gibt es zwei Versionen der Regsv32.exe-Datei:
Die 64-Bit-Version lautet% systemroot% \ System32 \ regsvr32.exe.
Die 32-Bit-Version lautet% systemroot% \ SysWoW64 \ regsvr32.exe.
"
quelle
Auf einem x64-System ist system32 für 64 Bit und syswow64 für 32 Bit (nicht umgekehrt, wie in einer anderen Antwort angegeben). WOW (Windows unter Windows) ist das 32-Bit-Subsystem, das unter dem 64-Bit-Subsystem ausgeführt wird.
Es ist ein Chaos in Bezug auf die Benennung und dient nur zur Verwirrung, aber so ist es.
Nochmal ...
syswow64 ist 32 Bit, NICHT 64 Bit.
system32 ist 64 Bit, NICHT 32 Bit.
In jedem dieser Verzeichnisse befindet sich ein regsrv32. Einer ist 64 Bit und der andere ist 32 Bit. Dies gilt auch für odbcad32 und et al. (Wenn Sie 32-Bit- ODBC- Treiber anzeigen möchten, die nicht mit dem Standard-Odbcad32 in System32 angezeigt werden, der 64-Bit ist.)
quelle
regsvr32
kümmert sich um die Details, theoretisch wird erkanntÖffnen Sie das Startmenü und geben Sie cmd in das Suchfeld ein. Halten Sie Strg + Umschalt gedrückt und drücken Sie die Eingabetaste
Dadurch wird die Eingabeaufforderung im Administratormodus ausgeführt.
Geben Sie nun Folgendes ein:
regsvr32 MyComobject.dll
quelle
Schließlich fand ich die Lösung nur CMD als Administrator ausführen und dann schreiben
dann schreibe das
Ich hoffe, diese Antwort wird Ihnen helfen
quelle
Wenn die DLL 32 Bit ist:
Wenn die DLL 64 Bit ist:
quelle
Alles hier versagte als falscher Weg. Dann erinnerte ich mich an einen Trick aus den alten Win95-Tagen. Öffnen Sie den Programmordner, in dem sich die DLL befindet, öffnen Sie C: / Windows / System32, scrollen Sie nach unten zu regsvr32 und ziehen Sie die DLL aus dem Programmordner auf rgsrver32. Boom, fertig.
quelle
Die Fehlermeldung zu kennen, wäre ziemlich wertvoll. Es soll Informationen liefern, auch wenn es für Sie keinen Sinn ergibt, für uns. Da ich gezwungen bin zu raten, würde ich sagen, dass die DLL ein 32-Bit-DirectX-Filter ist. In diesem Fall sollte dies die richtige Vorgehensweise sein:
Dies muss an einer Eingabeaufforderung mit erhöhten Rechten ausgeführt werden, damit die Benutzerkontensteuerung den erforderlichen Registrierungszugriff nicht stoppen kann. Stellen Sie weitere Fragen dazu auf superuser.com
quelle
Ich habe gerade diese extrem einfache Methode getestet und sie funktioniert einwandfrei. Ich verwende jedoch das integrierte Administratorkonto, sodass ich nicht durch die Rahmen springen muss, um erhöhte Berechtigungen zu erhalten.
Die folgende Batchdatei entlastet den Benutzer von der Notwendigkeit, Dateien in Systemordner zu verschieben. Es bleibt auch Windows überlassen, die richtige Version von anzuwenden
Regsvr32
.ANLEITUNG:
Öffnen Sie in dem Ordner, der die Bibliothek (
-.dll
oder-.ax
) Datei enthält, die Sie registrieren möchten, eine neue Textdatei und fügen Sie eine der folgenden Routinen ein:Speichern Sie Ihre neue Textdatei als batch (
-.bat
) -Datei. Ziehen Sie dann einfach Ihre-.dll
oder-.ax
-Datei per Drag & Drop über die Batch-Datei.Wenn die Benutzerkontensteuerung Ihnen nicht die Möglichkeit bietet, die Batchdatei als Administrator auszuführen, müssen Sie möglicherweise die Berechtigungen manuell erhöhen (Anweisungen gelten für Windows 7):
Create shortcut
;Properties
;Compatibility
Registerkarte.Run this program as administrator
.-.dll
oder-.ax
-Datei per Drag & Drop auf die neue Verknüpfung anstelle der Batchdatei.Das war's . Ich wählte
COPY
stattMOVE
den Ausfall eines UAC-bezogenen Follow-up - Versuchs (en) zu verhindern. Nach erfolgreicher Registrierung sollte die ursprüngliche Bibliotheksdatei (-.dll
oder ) gelöscht-.ax
werden.Machen Sie sich keine Sorgen über Kopien, die durch vorherige Durchläufe in den Systemordner (
C:\Windows\System32
oderC:\Windows\SysWOW64
) erstellt wurden. Diese werden jedes Mal überschrieben, wenn Sie die Batchdatei ausführen.Sofern Sie nicht die falsche Batchdatei ausgeführt haben , möchten Sie in diesem Fall wahrscheinlich die in den falschen Systemordner (
C:\Windows\System32
oderC:\Windows\SysWOW64
) erstellte Kopie löschen, bevor Sie die richtige Batchdatei ausführen, ... oder ...Helfen Sie Windows bei der Auswahl der richtigen Bibliotheksdatei für die Registrierung, indem Sie den Verzeichnisspeicherort vollständig qualifizieren.
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
vom Systemordnerpfad zu trennenFühren Sie diese Schrotflinten-Batch-Datei aus, die (in der Reihenfolge) ausgeführt wird:
C:\Windows\System32
;C:\Windows\System32
;C:\Windows\SystemWOW64
quelle
Run as administrator
ist ausgegraut, als ich eine Verknüpfung für die Bat-Datei erstellt habe. Ich bin als Administrator angemeldet. Auch ist es%nx1
oder%n1
?In Windows 7 gibt es einen Unterschied. Wenn Sie sich als Administrator anmelden, ist dies nicht der Fall die gleichen Rechte wie beim Ausführen eines Programms als Administrator.
Gehen Sie zu Start - Alle Programme - Zubehör. Klicken Sie mit der rechten Maustaste auf das Befehlsfenster und wählen Sie "Als Administrator ausführen". Registrieren Sie nun die DLL normal über: regsrvr32 xxx.dll
quelle
Wenn Sie dabei den Fehlercode 0x80040201 erhalten, probieren Sie die Lösung aus DllRegisterServer mit dem Fehlercode 0x80040201 fehlzuschlagen. Öffnen Sie jedoch die Eingabeaufforderung als Als Administrator ausführen .
quelle
Sie müssen das
cmd.exe
in ausführenc:\windows\system32\ by administrator
Befehle: Zum Aufheben der Registrierung * .dll-Dateien
regsvr32.exe /u C:\folder\folder\name.dll
Zur Registrierung * .dll-Dateien
quelle
Ein Teil der Verwirrung in Bezug auf regsvr32 besteht darin, dass sich in 64-Bit-Fenstern Name und Pfad nicht geändert haben, jetzt jedoch 64-Bit-DLLs registriert werden. Das 32-Bit-Register regsvr32 ist in SysWOW64 vorhanden, einem Namen, der anscheinend 64-Bit-Anwendungen darstellt. Das WOW64 im Namen bezieht sich jedoch auf Windows unter Windows 64 oder expliziter auf Windows 32-Bit unter Windows 64-Bit. Wenn Sie es so sehen, macht der Name Sinn, obwohl er in diesem Zusammenhang verwirrend ist.
Ich kann meine Originalquelle nicht in einem MSDN-Blog finden, aber in diesem Wikipedia-Artikel http://en.wikipedia.org/wiki/WoW64 wird darauf verwiesen
quelle
So habe ich dieses Problem auf einem Win7 x64-Computer behoben:
1 - Fehlermeldung:
"CoCreateInstance () fehlgeschlagen Bitte überprüfen Sie Ihre Registrierungseinträge CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} und stellen Sie sicher, dass Sie als Administrator angemeldet sind."
2 - Fixverfahren:
Hoffe das hilft !
quelle