| ¿ Qué son los archivos DLL? 
 Un archivo DLL (Dynamic Library Link) es un módulo componente de un programa 
      que ejecuta alguna función. Estos archivos DLL son muy útiles, pero también 
      suelen ser causa de errores en Windows.
 
 Los archivos DLL ejecutan acciones o rutinas de uso frecuente en Windows, y un mismo archivo DLL puede ser usado por varios programas al mismo tiempo (como el Kernel32.dll). Por ejemplo el procesador de palabras, la hoja de cálculo y otros programas pueden usar un mismo archivo DLL para desplegar el cuadro diálogo Abrir, cada vez que usted usa el comando Abrir.
 
 Gracias a ese esquema modular (que tambien se usa en el sistema operativo OS/2), hay muchas funciones que los creadores de software no tienen que incluir en sus programas; cuando un programa necesita enviar un documento a la impresora, simplemente llama el archivo DLL respectivo (que ya Windows instaló) para que este cargue y ejecute la tarea. De esa forma, los programas son más pequeños y se ahorra espacio en el disco duro.
 
 El hecho de que estos módulos de rutinas (Archivos DLL) no sean parte de programas, sino que se guardan como archivos independientes, también optimiza el uso de la memoria RAM. Un DLL se carga en la memoria RAM y se ejecuta únicamente cuando un programa lo llama para que realice una función, mientras que otros módulos de rutinas que sí hacen parte del programa permanecen cargados  en la memoria mientras trabaja con un programa.
 
 Windows incluye muchos archivos DLL que son usados por otros programas (la mayoría en la carpeta c:\windows\system). Pero algunos programas también instalan sus propios archivos DLL (y generalmente los colocan en la carpeta del disco duro en la que está guardado dicho programa).
 
 Observaciones en el manejo de DLL
 
 Como diferentes programas deben compartir los mismo DLL, si algunos programas no respetan ciertas reglas del juego se pueden producir errores. A veces uno instala programas que colocan una versión vieja de un archivo DLL en la carpeta c:\windows\system y remplazan -sin avisar- la versión más reciente del mismo DLL. Al hacer eso, es posible que se produzcan fallas en los programas que usaban la versión más reciente del DLL.
 
 Nota: En Windows XP no es posible reemplazar un archivo dll del sistema, ya que este se dará cuenta y automaticamente copiara el DLL correcto de su base de datos, Windows XP se protege de esta manera para evitar conflictos.
 
 No todos los archivos DLL tienen extensión .dll; tambien hay archivos del mismo tipo con extensiones .ocx, .exe, .drv, .vxd, etc.
 
 
 Cuando Windows le muestre un mensaje de error que dice que le falta un DLL, 
      anote el nombre exacto del archivo (incluyendo la extensión), busque el 
      archivo en cualquiera de los sitios que al final se recomiendan, bájelo 
      y copiélo en la carpeta en la que lo está buscando el programa que generó 
      el mensaje de error (probablemente c:\windows\system o la carpeta en la 
      que está almacenado el programa).
 
 Tenga en cuenta que puede haber versiones diferentes de Archivos DLL, pero 
      con un nombre idéntico. Se recomienda no remplazar un DLL por una versión 
      más vieja (para saber que versión tiene un DLL, busque el archivo, dé click 
      derecho sobre él, seleccione propiedades y de click en la pestaña Versión). 
      Lo mejor es que siempre guarde en un diskette o alguna parte de sus disco 
      duro el DLL que va a reemplazar (incluso aunque sea de una versión más vieja). 
      Uno nunca sabe qué programa lo pueda necesitar.
 
 Windows File Protection [WFP]
 
 Windows FIle Protection (WFP) protege los archivos DLL del sistema de ser 
      actualizadas o borradas por agentes no autorizados. Las aplicaciones no 
      pueden sustituir las DLLs del sistema. Unicamente los paquetes de actualizacion 
      del sistema operativo com los SP (Service Packs) pueden hacer esto.
 
 Los archivos DLL del sistema que pueden ser unicamente actualizadas por 
      los Service Pack (SP) se denominan DLLs protegidas. Hay aproximadamente 
      2800 DLLs protegidas en Windows 2000 y XP.
 
 Si intentamos copiar un archivo DLL identico a uno protegido en el directorio 
      del sistema, el reemplazo del archivo DLL, aparentemente, parecerá que es 
      correcta y no veremos ningun mensaje de error. Pero Windows 2000 y XP recuperarán 
      el archivo DLL recientemente copiado con el archivo DLL original silenciosamente.
 
 WFP elimina completamente los errores de los archivos DLL y además minimiza 
      los problemas causados por instalación y/o actualización de aplicaciones.
 
 System File Checker (sfc)
 Tip: Para comprobar que los archivos de tu sistema estan en perfecto estado 
      y completos, ejecuta esta instruccion:
 
 En Windows XP: Ve a Inicio > Ejecutar y escribe esto "sfc 
      /scannow" (sin las comillas).
 DLL's Privadas
 
 Las DLLs privadas son DLLs que son instaladas con una aplicación específica 
        y usadas solo por esa aplicación.
 
 Por ejemplo, supongamos que yo soy el responsable de un programa llamada 
        Wilkinsonpc.exe. Yo he 'testeado' ese programa con una versión x.x de 
        la librería de Microsoft MSVCRT.DLL y una versión y.y de la SA.DLL (por 
        ejemplo, SA.DLL no es una DLL de Microsoft, pero es una DLL de terceros 
        distribuida con otras varias aplicaciones). Yo quiero asegurarme que mi 
        programa Wilkinsonpc.exe siempre usará la MSVCRT.DLL version x.x y la 
        SA.DLL version y.y. Para hacer esto, mi instalador del producto copia 
        Wilkinsonpc.exe, MSVCRT.DLL version x.x y SA.DLL version y.y en la carpeta 
        .\Wilkinsonpc. Ademas debo notificar a Windows 2000, que Wilkinsonpc.exe 
        debe utilizar esas DLLs privadas y unicamente esas (esto no es posible 
        con Windows 95/98 ó ME). Cuando Wilkinsonpc.exe se ejecuta en Windows 
        2000 ó XP, este va a mirar en la carpeta .\Wilkinsonpc para localizar 
        las DLLs de version específica antes de mirar en las carpetas del sistema 
        y en el path.
 
 Los Service Packs futuros que actualizen al MSVCRT.DLL no harán fallar 
        a la aplicacion debido a que Wilkinsonpc.exe no utiliza la version compartida 
        de MSVCRT.DLL. Otras aplicaciones que instalen diferentes versiones de 
        SA.DLL tampoco afectarán a Wilkinsonpc.exe debido a que este, tiene su 
        versión privada de SA.DLL.
 
 Las DLLs privadas, se las denomina tambien DLLs unicas, debido a que utiliza 
        una copia privada de esa DLL en lugar de la generica. Si ejecuitamos por 
        ejemplos WordPad y Wilkinsonpc concurrentemente, dos copias de la MSVCRT.DLL 
        serán cargadas en memoria.
 
 Por tanto, como autores de la aplicación, podriamos registrar cada DLL 
        o componente de la aplicacion en el directorio de la aplicacion en donde 
        queremos que resida la copia privada.
 
 Existe un segundo metodo que puede ser utilizado en aplicaciones 
        ya existentes. Supongamos que c:\Wilkinsonpc\Wilkinsonpc.exe es una aplicación 
        existente y que la queremos proteger de futuras actualizaciones de DLLs 
        o incluso de actualizaciones debidas a los Service Packs. Simplemente 
        copiamos las DLLs que queremos que sean privadas a Wilkinsonpc.exe a la 
        carpeta .\Wilkinsonpc y creamos un archivo vacio en ese directorio llamado 
        Wilkinsonpc.exe.local. De esta manerá el sistema sabe que cuando Wilkinsonpc.exe 
        quiera cargar una DLL, debe buscarla siempre primero en donde esté ese 
        archivo .local y buscará por tanto las DLLs y servidores COM en dicho 
        directorio antes que en el path especifico de Windows.
 
 Ambas soluciones, la version específica (en nuevas aplicaciones) y .local 
        (en viejas aplicaciones) tienen las siguientes caracteristicas:
 
        Los archivos DLL que están en el directorio de la aplicación son cargados 
          en lugar de los archivos DLL del sistema, aún cuando la función "LoadLibrary" 
          de la aplicación tenga el camino 'hard-coded'. 
        No es posible redirigir la 20 KnownDLLs (conocidas DLLs), que están 
          referenciadas en HKEY_LOCAL_MACHINE\SYSTEM\CurrentoControlSet\Control\SessionManager\KnownDLLs. 
          Estas no pueden rodar independientemente ya que necesitan mantener estados 
          de procesos cruzados. Por ejemplo: kernel32, user32 y ole32 no pueden 
          ser redirigidas debido a que tienen estados (objetos del kernel, manejadores 
          de ventanas) que necesitan existir a lo largo de todos los procesos. 
          En futuras versiones del sistema operativo estas limitaciones quedarán 
          mas restringidas. 
       ¿ Como Agregar / Instalar o Quitar / Desregistrar 
        archivos .dll ó .ocx ?
 Para agregar ciertos archivos .ocx y/o .dll, abra una ventana de comandos
 
 En Windows 98/ME: Vaya a Inicio > Ejecutar escriba esto "command.com" (sin las comillas)
 
 En Windows NT/2000/XP: Vaya a Inicio > Ejecutar escriba esto "cmd" (sin las comillas)
 
 Navegue a traves de los directorios hasta llegar a la carpeta que contiene el archivo DLL que desee instalar/registrar o desinstalar/desregistrar.
 
 El siguiente es el comando que necesitaras ejecutar para instalar/registrar:
 
 regsvr32 [nombre.dll] ó [nombre.ocx]
 
 Ejemplo: regsvr32 msvcp60.dll
 
 Para desinstalar/desregistrar un archivo DLL u OCX:
 
 regsvr32 /u [nombre.dll] ó [nombre.ocx]
 
 Ejemplo: regsvr32 /u msvcp60.dll
 
 
 |