Wie registriere ich eine DLL-Datei unter Windows 7 64-Bit?


101

Ich habe versucht, den folgenden Code zu verwenden:

cd c:\windows\system32
regsvr32.exe dllname.ax

Aber das funktioniert bei mir nicht. Wie kann ich eine DLL-Datei unter Windows 7 mit einem 64-Bit-Prozessor registrieren?


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.


5
regsvr32 Pfad 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\syswow64 regsvr32 c:\filename.dll


13
Warum ist dies nicht die ausgewählte Antwort?
Mike Devenney

5
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.
"


26
+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.)


1
Warum spielt es eine Rolle? regsvr32kümmert sich um die Details, theoretisch wird erkannt
Sk8erPeter

8

Ö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


6

Schließlich fand ich die Lösung nur CMD als Administrator ausführen und dann schreiben

cd \windows\syswow64

dann schreibe das

regsvr32 c:\filename.dll

Ich hoffe, diese Antwort wird Ihnen helfen


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:

  1. Kopieren Sie die DLL nach C: \ Windows \ SysWoW64 \
  2. In erhöhtem cmd:% windir% \ SysWoW64 \ regsvr32.exe% windir% \ SysWoW64 \ namedll.dll

Wenn die DLL 64 Bit ist:

  1. Kopieren Sie die DLL nach C: \ Windows \ System32 \
  2. In erhöhtem cmd:% windir% \ System32 \ regsvr32.exe% windir% \ System32 \ namedll.dll

6

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.


2
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


3

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):

    1. Klicken Sie mit der rechten Maustaste auf die Batchdatei.
    2. Wählen Sie Create shortcut;
    3. Klicken Sie mit der rechten Maustaste auf die Verknüpfung.
    4. Wählen Sie Properties;
    5. Klicken Sie auf die CompatibilityRegisterkarte.
    6. Aktivieren Sie das Kontrollkästchen Run this program as administrator.
    7. Ziehen Sie Ihre -.dlloder -.ax-Datei per Drag & Drop auf die neue Verknüpfung anstelle der Batchdatei.

Das war's . Ich wählte COPY statt MOVE den Ausfall eines UAC-bezogenen Follow-up - Versuchs (en) zu verhindern. Nach erfolgreicher Registrierung sollte die ursprüngliche Bibliotheksdatei ( -.dll oder ) gelöscht -.axwerden.

Machen Sie sich keine Sorgen über Kopien, die durch vorherige Durchläufe in den Systemordner ( C:\Windows\System32 oder 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\System32 oder C:\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.

    1. Kopieren Sie aus der rechten Batchdatei den Pfad des Systemordners
      • Wenn 64-Bit: C:\Windows\System32
      • Wenn 32-Bit: C:\Windows\SysWOW64
    2. 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:

    1. 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).
    2. 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.
    3. 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).
    4. 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.
    5. 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



3

Sie müssen das cmd.exein 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

regsvr32.exe C:\folder\folder\name.dll

2

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


1

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
  • Starten Sie Win 7 neu und wieder im Geschäft!

Hoffe das hilft !

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.