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?
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?
Antworten:
Geben Sie regsvr32 name.dll
in die Eingabeaufforderung (in erweiterten Modus ausgeführt!) Und drücken Sie „Enter“ . Beachten Sie, dass name.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 ein regsvr32 iexplore.dll
.
regsvr32
Pfad der DLL-Datei mit Dateinamen und Erweiterung und drücken Sie die Eingabetaste
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
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.
"
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.)
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
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 die DLL 32 Bit ist:
Wenn die DLL 64 Bit ist:
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.
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 ( -.dll
oder -.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 -.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
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 -.ax
werden.
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.
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
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
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 .
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:
"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."
Hoffe das hilft !
regsvr32
muss eine DLL die FunktionenDllRegisterServer
und exportierenDllUnregisterServer
. Die überwiegende Mehrheit der von Ihnen erstellten DLLs ist überhaupt nicht registriert.