Cómo detener y desregistrar un archivo DLL en Windows (regsvr32 /u)

Los archivos DLL (Dynamic Link Library) son bibliotecas de código compartido. A veces una DLL defectuosa, mal registrada o maliciosa causa errores. Para dejar de usarla, hay que desregistrarla (quitar entradas del Registro) y opcionalmente borrarla/renombrarla.

⚠️ Riesgo alto

Desregistrar DLLs de sistema (shell32.dll, kernel32.dll, user32.dll, comctl32.dll, etc.) rompe Windows. Solo toca DLLs de terceros identificadas como problemáticas (ej: toolbar, codec, plugin, malware). Crea punto de restauración antes.

Pasos

Paso 1: Identificar la DLL exacta y su ruta completa

  • Visor de eventos (eventvwr.msc) → Windows Logs → Application / System → busca «Faulting module name: xyz.dll».
  • Process Explorer (Sysinternals) → Ctrl+F → nombre DLL → ver ruta completa.
  • Autoruns (Sysinternals) → pestaña «DLLs» → busca entradas sospechosas (sin editor, ruta rara, sin firma).

Paso 2: Abrir Símbolo del sistema como Administrador

Win → escribe cmd → Ctrl+Shift+Enter (o clic derecho → «Ejecutar como administrador»).

Paso 3: Desregistrar la DLL

regsvr32 /u "C:\Ruta\Completa\archivo.dll"

Ejemplo: regsvr32 /u "C:\Program Files\BarraHerramientas\TBHelper.dll"

  • /u = Unregister (desregistrar).
  • Comillas obligatorias si ruta tiene espacios.
  • Debe salir «DllUnregisterServer en C:\...\archivo.dll succeeded».

Paso 4: Verificar / Renombrar / Borrar

  • Si éxito: renombra archivo.dll → archivo.dll.bak o muévelo. Así no se recarga.
  • Reinicia PC. Verifica si el error desaparece.

Paso 5: Si falla «LoadLibrary failed» / «Module not found»

  • La DLL no está registrada (no hay entrada en Registro). Solo renombra/borra.
  • O la DLL es de 32 bits en Windows 64 bits: usa %windir%\SysWOW64\regsvr32.exe /u "C:\Ruta\archivo.dll".
  • O la DLL tiene dependencias faltantes: Dependency Walker (depends.exe) para verlas.

Herramientas recomendadas

  • Autoruns (Sysinternals) — ve todas las DLLs registradas (pestaña DLLs), desmarca para deshabilitar, botón derecho → «Jump to entry» → Regedit → borra clave CLSID/ProgID.
  • Process Explorer — ver qué proceso carga qué DLL.
  • ListDLLs (Sysinternals CLI) — listdlls -r nombre_dll.

Restaurar si algo falla

Punto de restauración → «Recuperación» → «Abrir Restaurar sistema» → elige punto previo. O renombra .bak → .dll y regsvr32 "ruta\archivo.dll" (sin /u).