A volte, se sei un utente Windows, è probabile che tu abbia dovuto eseguire l’utilità regsvr32.exe
per “registrare una DLL”. Se è così, probabilmente non eri consapevole di ciò che stava accadendo sotto sotto. Questa criptica utility viene utilizzata per gestire i controlli Object Linking and Embedding (OLE) che molte applicazioni Windows utilizzano.
Ma cosa sono esattamente un controllo OLE e perché vorresti registrare un controllo OLE? In questo tutorial, imparerai i molti modi per installare, disinstallare, registrare o annullare la registrazione di un controllo OLE con l’utilità regsvr32.exe
.
Prerequisiti
Assicurati di avere i requisiti seguenti per seguire l’utilizzo dell’utilità regsvr32.exe
:
- Dato che l’utilità regsvr32.exe è integrata nella maggior parte delle versioni di Windows, ti serve solo un computer Windows con un account amministratore.
- Avrai bisogno di PowerShell 7 per usufruire dello script PowerShell incluso in questo tutorial.
Cosa sono i Controlli OLE?
Prima di imparare come utilizzare l’utilità regsvr32.exe
, devi prima avere una comprensione rudimentale di cosa gestisce questo strumento, i controlli OLE.
Gli OLE controls sono una tecnologia specifica di Windows sviluppata per agevolare l’incorporamento e il collegamento a documenti e altri oggetti. Questa tecnologia si è evoluta nel corso degli anni e sono stati costruiti diversi componenti sulla base della tecnologia OLE.
Potresti aver sentito parlare di Component Object Model (COM), Distributed Component Object Model (DCOM) o controlli ActiveX. Ognuna di queste tecnologie è costruita su o estensione della tecnologia OLE, che definisce un’interfaccia standard per le funzioni scritte in molti linguaggi diversi.
Gli ActiveX sono deprecati, ma sono ancora disponibili tramite Internet Explorer su Windows 10, ma non su Microsoft Edge.
Registrazione degli OLE Controls
Ora che hai capito cosa fa l’utilità regsvr32.exe
, è il momento di registrare un OLE control, e ci sono diverse varianti di comando per farlo. Scegli una delle varianti di comando qui sotto o prova ognuna di esse.
Puoi registrare gli OLE controls tramite PowerShell o un prompt dei comandi di Windows. In entrambi i casi, assicurati di eseguire la riga di comando come amministratore per garantire una corretta registrazione del controllo.
Visualizzazione di un risultato GUI
Registrare una DLL con regsvr32
, nel caso d’uso più semplice, comporta passare il percorso della DLL al tool. Per impostazione predefinita, regsvr32
visualizzerà una finestra popup che indica il successo (o il fallimento). Per registrare una DLL, fornire il nome o il percorso completo della DLL come mostrato di seguito.
Eseguire il comando seguente creerà le classi di registro necessarie per il controllo OLE di destinazione nella chiave HKEY_CLASSES_ROOT\CLSID per le istanze x64 o HKEY_CLASSES_ROOT\WOW6432Node\CLSID per le istanze x86.
In caso di successo, verrà visualizzato un risultato GUI che indica che DllRegisterServer
è stato eseguito correttamente.

Quando si registra un controllo OLE,
regsvr32.exe
applicherà il percorso di ricerca di sistema. Pertanto, se è necessario registrare un file specifico al di fuori di quel percorso, è meglio specificare il percorso assoluto del file.
Registrare un controllo OLE in modo silenzioso
Quando si eseguono comandi, non è sempre auspicabile visualizzare una finestra di dialogo GUI. Quindi vediamo come è possibile sopprimere eventuali finestre di dialogo GUI durante la registrazione di un controllo OLE.
Per sopprimere le finestre di dialogo GUI, eseguire regsvr32
seguito dal nome della DLL (msxml3.dll
) e dallo switch /s
per registrare il controllo OLE in modo silenzioso. L’unico inconveniente di questo comando è che si sopprimeranno anche eventuali messaggi di errore.
Esiste uno switch non documentato,
/e
, che sopprime solo il messaggio di successo GUI ma mostra il messaggio di errore GUI—intelligente!

Registrare un controllo OLE e specificare un’azione di installazione
Quando si specifica una DLL per una registrazione OLE, si chiama solo il metodo DllRegisterServer
, ma ci sono momenti in cui è necessario agire dopo la registrazione. Per farlo, è possibile specificare il parametro /i
.
Ad esempio, è possibile passare una stringa di input (U
) al parametro /i
, che invocherà contemporaneamente il metodo DllInstall
e il metodo DllRegisterServer
.
Il metodo
DllInstall
consente all’utilitàregsvr32.exe
di installare una DLL in più modi e di invocare varie azioni per una DLL.

Specifica di un’azione di installazione senza chiamare il metodo DllRegisterServer
Forse si desidera solo installare un controllo OLE senza ri-registrarlo. In tal caso, eseguire il seguente comando.
Il comando sopra utilizza il parametro /n
per evitare la chiamata del metodo DllRegisterServer
per la DLL shell32.dll nel metodo di installazione, DllInstall.

Annullare la registrazione di un controllo OLE con regsvr32.exe
Se hai completato la registrazione di un controllo OLE senza errori, allora è un sollievo. Ma potrebbe esserci un momento in cui è necessario disinstallare un controllo OLE quando entra in conflitto con altri. Fortunatamente, regsvr32.exe
offre la possibilità di annullare la registrazione e disinstallare un controllo OLE.
Per disiscrivere e disinstallare un controllo, eseguire il regsvr32.exe
e passare il parametro /u
per disiscrivere il controllo OLE. Puoi vedere nel risultato GUI sottostante che la DLL msxml3.dll è stata disinstallata con successo.
Per eseguire un’azione insieme alla disiscrizione, passare la stringa dell’azione (
U
) al parametro/i
. Quindi il comandoregsvr32
chiamerà il metodoDllInstall
con quell’azione come disinstallazione, così:regsvr32 /i:azione /U msxml3.dll
.

Gestione degli errori per regsvr32.exe
Hai avuto successo nel registrare i controlli OLE, ma cosa succede se il comando di registrazione si imbatte in un errore? Ci sono alcuni errori che possono apparire quando si tenta di gestire i controlli. Questi messaggi possono essere criptici a volte ma vengono scomposti di seguito per farti sapere cosa li causa.
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. |
Estendere l’utilità regsvr32.exe
con PowerShell
Poiché regsvr32.exe
preferisce l’output GUI, l’automazione può essere una sfida. Per superare questa sfida, è possibile avvolgere l’utilità regsvr32.exe
in una funzione PowerShell. Creando una funzione PowerShell, è possibile eseguire regsvr32.exe
proprio come se fosse un cmdlet nativo di PowerShell.
Come esempio, controlla la funzione PowerShell Invoke-RegSvr32
qui sotto. Questa funzione invoca l’utilità regsvr32
e utilizza PowerShell per catturare il codice di uscita e elaborarlo di conseguenza. E applicando una convalida degli argomenti in anticipo, puoi anche evitare errori del tutto!
Per sperimentare con la funzione sottostante, apri una nuova console PowerShell e copia-incolla il codice in essa. Quindi, sarai in grado di invocare la funzione come mostrato di seguito.
Di seguito troverai alcuni esempi su come utilizzare la funzione Invoke-RegSvr32
.

Invoke-RegSvr32
PowerShell CommandConclusione
A questo punto, hai imparato a registrare e deregistrare le DLL e a gestire gli errori. Anche se regsvr32.exe
potrebbe non essere utilizzato così spesso nelle attività quotidiane, ci sono certi momenti in cui è necessario registrare o deregistrare una DLL.
Per estendere ulteriormente questo concetto, potresti ampliare PowerShell per gestire ancora più controlli e casi particolari. Potresti addirittura creare una funzione PowerShell per elencare i controlli registrati nella posizione del registro CLSID
!