Manchmal, wenn Sie ein Windows-Benutzer sind, haben Sie wahrscheinlich schon mal das Dienstprogramm regsvr32.exe
ausgeführt, um eine DLL zu „registrieren“. Wenn ja, waren Sie sich wahrscheinlich nicht genau bewusst, was unter der Oberfläche passiert ist. Dieses kryptische Dienstprogramm wird verwendet, um Object Linking and Embedding (OLE) Steuerelemente zu verwalten, die viele Windows-Anwendungen verwenden.
Aber was genau ist ein OLE-Steuerelement und warum möchten Sie ein OLE-Steuerelement registrieren? In diesem Tutorial lernen Sie die verschiedenen Möglichkeiten kennen, ein OLE-Steuerelement mit dem Dienstprogramm regsvr32.exe
zu installieren, zu deinstallieren, zu registrieren oder zu deregistrieren.
Voraussetzungen
Vergewissern Sie sich, dass Sie die folgenden Anforderungen erfüllen, um das Dienstprogramm regsvr32.exe
auszuführen:
- Da das Dienstprogramm regsvr32.exe in den meisten Versionen von Windows integriert ist, benötigen Sie nur einen Windows-Computer mit einem Administrator-Konto.
- Sie benötigen PowerShell 7, um von dem in diesem Tutorial enthaltenen PowerShell-Skript zu profitieren.
Was sind OLE-Steuerelemente?
Bevor Sie lernen, wie Sie das Dienstprogramm regsvr32.exe
verwenden, müssen Sie zunächst ein grundlegendes Verständnis dafür haben, was dieses Tool verwaltet, nämlich OLE-Steuerelemente.
OLE-Steuerungen sind eine Windows-spezifische Technologie, die entwickelt wurde, um das Einbetten und Verknüpfen von Dokumenten und anderen Objekten zu erleichtern. Diese Technologie hat sich im Laufe der Jahre weiterentwickelt, und verschiedene Komponenten wurden auf der Grundlage der OLE-Technologie entwickelt.
Sie haben vielleicht von Component Object Model (COM), Distributed Component Object Model (DCOM) oder ActiveX-Steuerungen gehört. Jede dieser Technologien basiert entweder auf der OLE-Technologie oder ist eine Erweiterung davon, die eine standardisierte Schnittstelle für Funktionen definiert, die in vielen verschiedenen Sprachen geschrieben wurden.
ActiveX ist veraltet, aber über Internet Explorer auf Windows 10 weiterhin verfügbar, jedoch nicht über Microsoft Edge.
Registrierung von OLE-Steuerungen
Jetzt, da Sie verstehen, was das Dienstprogramm regsvr32.exe
tut, ist es an der Zeit, eine OLE-Steuerung zu registrieren, und es gibt mehrere Befehlsvarianten, um das zu tun. Wählen Sie eine der folgenden Befehlsvarianten aus oder probieren Sie einfach jede aus.
Sie können OLE-Steuerungen über PowerShell oder eine Windows-Eingabeaufforderung registrieren. Stellen Sie in jedem Fall sicher, dass Sie Ihre Befehlszeile als Administrator ausführen, um sicherzustellen, dass die Steuerung ordnungsgemäß registriert wird.
Anzeige eines GUI-Ergebnisses
Die Registrierung einer DLL mit regsvr32
erfolgt im einfachsten Anwendungsfall durch Angabe des DLL-Pfads an das Tool. Standardmäßig zeigt regsvr32
ein Popup-Fenster an, das den Erfolg oder Misserfolg anzeigt. Um eine DLL zu registrieren, geben Sie den Namen oder den vollständigen Pfad der DLL wie unten gezeigt an.
Das Ausführen des folgenden Befehls erstellt die erforderlichen Registrierungsklassen für die Ziel-OLE-Steuerelemente im Schlüssel HKEY_CLASSES_ROOT\CLSID für x64-Instanzen oder HKEY_CLASSES_ROOT\WOW6432Node\CLSID für x86-Instanzen.
Bei Erfolg wird ein GUI-Ergebnis angezeigt, das angibt, dass DllRegisterServer
erfolgreich war.

Bei der Registrierung eines OLE-Steuerelements wendet
regsvr32.exe
den System-Suchpfad an. Wenn Sie also eine bestimmte Datei außerhalb dieses Pfads registrieren möchten, ist es am besten, den absoluten Pfad zur Datei anzugeben.
Stilles Registrieren eines OLE-Steuerelements
Beim Ausführen von Befehlen ist es nicht immer wünschenswert, dass ein GUI-Prompt angezeigt wird. Daher zeigen wir Ihnen, wie Sie jegliche GUI-Prompt beim Registrieren eines OLE-Steuerelements unterdrücken können.
Um GUI-Prompts zu unterdrücken, führen Sie regsvr32
gefolgt vom DLL-Namen (msxml3.dll
) und dem Schalter /s
aus, um das OLE-Steuerelement still zu registrieren. Der einzige Nachteil dieses Befehls besteht darin, dass auch alle Fehlermeldungen unterdrückt werden.
Es gibt einen nicht dokumentierten Schalter
/e
, der nur die GUI-Erfolgsmeldung unterdrückt, jedoch die GUI-Fehlermeldung anzeigt – clever!

Registrieren einer OLE-Steuerelement und Angeben einer Installationsaktion
Wenn Sie eine DLL für eine OLE-Registrierung angeben, rufen Sie nur die Methode DllRegisterServer
auf, aber es gibt Zeiten, in denen Sie nach der Registrierung eine Aktion ausführen müssen. Dazu können Sie den Parameter /i
angeben.
Zum Beispiel könnten Sie einen Eingabestring (U
) an den Parameter /i
übergeben, der die Methode DllInstall
und die Methode DllRegisterServer
gleichzeitig aufruft.
Die Methode
DllInstall
ermöglicht es dem Dienstprogrammregsvr32.exe
, eine DLL auf mehr als eine Weise zu installieren und verschiedene Aktionen für eine DLL aufzurufen.

Angabe einer Installationsaktion ohne Aufruf der Methode DllRegisterServer
Vielleicht möchten Sie nur ein OLE-Steuerelement installieren, ohne es neu zu registrieren. Wenn ja, führen Sie den folgenden Befehl aus.
Der obige Befehl verwendet den Parameter /n
, um den Aufruf der Methode DllRegisterServer
für die DLL shell32.dll für die Installationsmethode DllInstall
zu verhindern.

Deaktivieren einer OLE-Steuerung mit regsvr32.exe
Wenn Sie eine OLE-Steuerelement ohne Fehler registriert haben, ist das eine Erleichterung. Aber es kann eine Zeit geben, in der Sie eine OLE-Steuerelement deinstallieren müssen, wenn es mit anderen in Konflikt steht. Glücklicherweise bietet regsvr32.exe
die Möglichkeit, eine OLE-Steuerelement zu deaktivieren und zu deinstallieren.
Um ein Steuerelement abzumelden und zu deinstallieren, führen Sie das regsvr32.exe
aus und übergeben Sie den Parameter /u
, um das OLE-Steuerelement abzumelden. Sie können im untenstehenden GUI-Ergebnis sehen, dass die DLL msxml3.dll erfolgreich deinstalliert wurde.
Um eine Aktion zusammen mit der Abmeldung auszuführen, übergeben Sie den Aktionsschlüssel (
U
) an den Parameter/i
. Dann ruft der Befehlregsvr32
die MethodeDllInstall
mit dieser Aktion als Deinstallation auf, z. B.:regsvr32 /i:Aktion /U msxml3.dll
.

Fehlerbehandlung für regsvr32.exe
Sie haben erfolgreich OLE-Steuerelemente registriert, aber was passiert, wenn der Registrierungsbefehl auf einen Fehler stößt? Es gibt eine Handvoll Fehler, die auftreten können, wenn Sie versuchen, Steuerelemente zu verwalten. Diese Nachrichten können manchmal kryptisch sein, aber unten sind die Ursachen aufgeschlüsselt, um Sie darüber zu informieren.
FAIL_ARGS | ⦿ “Unrecognized flag” ⦿ “Extra argument on command line” ⦿ “This command is only valid when an OLE Custom Control project is open” ⦿ “No DLL name specified” |
Implies that a command-line argument was incorrect. |
FAIL_OLE | “OleInitialize failed” | Implies that there was an error in properly initializing the OLE subsystem. |
FAIL_LOAD | “LoadLibary(<dllname) failed>“ | This can be a host of reasons such as a dependent library missing, the DLL is inaccessible due to permissions, or the file is missing. |
FAIL_ENTRY | ⦿ ” was loaded, but the entry point was not found. does not appear to be an .DLL or .OCX file” ⦿ ” was loaded, but the entry point was not found. may not be exported or a corrupt version may be in memory. Consider using PView to detect and remove it.” ⦿ ” was loaded, but the entry point was not found. may not be exported, or a corrupt version may be in memory. Consider using WPS to detect and remove it.” |
Implies that the entry point in the DLL, or function name, is missing. |
FAIL_REG | “<DLLEntryPoint> in <DLLName> failed“ | Implies that despite all the prior steps completing the system still failed to fully register the DLL. |
Erweitern des Dienstprogramms regsvr32.exe
mit PowerShell
Da regsvr32.exe
die GUI-Ausgabe bevorzugt, kann die Automatisierung eine Herausforderung darstellen. Um diese Herausforderung zu bewältigen, können Sie das Dienstprogramm regsvr32.exe
in eine PowerShell-Funktion einbetten. Durch das Erstellen einer PowerShell-Funktion können Sie regsvr32.exe
ausführen, als ob es ein nativer PowerShell-Befehl wäre.
Als Beispiel, schauen Sie sich unten die Invoke-RegSvr32
PowerShell-Funktion an. Diese Funktion ruft das Dienstprogramm regsvr32
auf und verwendet PowerShell, um den Exit-Code zu erfassen und entsprechend zu verarbeiten. Und durch die Anwendung einer Argumentvalidierung im Voraus können Sie sogar Fehler ganz vermeiden!
Um mit der untenstehenden Funktion zu experimentieren, öffnen Sie eine neue PowerShell-Konsole und kopieren Sie den Code hinein. Dann können Sie die Funktion wie unten gezeigt aufrufen.
Nachfolgend finden Sie einige Beispiele zur Verwendung der Invoke-RegSvr32
-Funktion.

Invoke-RegSvr32
PowerShell CommandSchlussfolgerung
Bis jetzt haben Sie gelernt, wie man DLLs registriert und deregistriert und Fehler behandelt. Obwohl regsrv32.exe
bei alltäglichen Aufgaben vielleicht nicht so häufig verwendet wird, gibt es bestimmte Zeiten, in denen Sie eine DLL registrieren oder deregistrieren müssen.
Um dies noch weiter auszudehnen, könnten Sie PowerShell erweitern, um noch mehr Überprüfungen und Randfälle zu berücksichtigen. Sie könnten sogar eine PowerShell-Funktion erstellen, um die registrierten Steuerelemente im CLSID
-Registrierungsort aufzulisten!