You are on page 1of 4

Curso Superior de Armado y Reparacin de PC

Qu son los archivos DLL?


Un archivo DLL (Dynamic Library Link) es un mdulo componente de un programa que ejecuta alguna funcin. Estos archivos DLL son muy tiles, pero tambin 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 clculo y otros programas pueden usar un mismo archivo DLL para desplegar el cuadro dilogo Abrir, cada vez que usted usa el comando Abrir. Gracias a ese esquema modular (que tambin 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 ms pequeos y se ahorra espacio en el disco duro. El hecho de que estos mdulos de rutinas (Archivos DLL) no sean parte de programas, sino que se guardan como archivos independientes, tambin 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 funcin, mientras que otros mdulos 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 mayora en la carpeta c:\windows\system). Pero algunos programas tambin 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 versin vieja de un archivo DLL en la carpeta c:\windows\system y remplazan -sin avisar- la versin ms reciente del mismo DLL. Al hacer eso, es posible que se produzcan fallas en los programas que usaban la versin ms reciente del DLL. Nota: En Windows XP no es posible reemplazar un archivo dll del sistema, ya que este se dar cuenta y automticamente 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 extensin .dll; tambin 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 extensin), busque el archivo en cualquiera de los 1

Curso Superior de Armado y Reparacin de PC

sitios que al final se recomiendan, bjelo y cpielo 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 idntico. Se recomienda no remplazar un DLL por una versin ms vieja (para saber que versin tiene un DLL, busque el archivo, d clic derecho sobre l, seleccione propiedades y de clic en la pestaa Versin). Lo mejor es que siempre guarde en un diskette o alguna parte de su disco duro el DLL que va a reemplazar (incluso aunque sea de una versin ms vieja). Uno nunca sabe qu programa lo pueda necesitar. Windows File Proteccin [WFP] Windows File Proteccin (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. nicamente los paquetes de actualizacin del sistema operativo como los SP (Services Packs) pueden hacer esto. Los archivos DLL del sistema que pueden ser nicamente actualizadas por los Services Pack (SP) se denominan DLLs protegidas. Hay aproximadamente 2800 DLLs protegidas en Windows 2000 y XP. Si intentamos copiar un archivo DLL idntico a uno protegido en el directorio del sistema, el reemplazo del archivo DLL, aparentemente, parecer que es correcta y no veremos ningn mensaje de error. Pero Windows 2000 y XP recuperarn el archivo DLL recientemente copiado con el archivo DLL original silenciosamente. WFP elimina completamente los errores de los archivos DLL y adems minimiza los problemas causados por instalacin y/o actualizacin de aplicaciones. System File Checker (sfc) Tip: Para comprobar que los archivos de tu sistema estn en perfecto estado y completos, ejecuta esta instruccin: 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 aplicacin especfica y usadas solo por esa aplicacin. Por ejemplo, supongamos que yo soy el responsable de un programa llamada Wilkinsonpc.exe. Yo he 'testeado' ese programa con una versin x.x de la librera de Microsoft MSVCRT.DLL y una versin 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 versin x.x y la SA.DLL versin y.y. Para hacer esto, mi instalador del producto copia

Curso Superior de Armado y Reparacin de PC

Wilkinsonpc.exe, MSVCRT.DLL versin x.x y SA.DLL versin y.y en la carpeta .\Wilkinsonpc. Adems debo notificar a Windows 2000, que Wilkinsonpc.exe debe utilizar esas DLLs privadas y nicamente 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 versin especfica antes de mirar en las carpetas del sistema y en el path. Los Services Packs futuros que actualicen al MSVCRT.DLL no harn fallar a la aplicacin debido a que Wilkinsonpc.exe no utiliza la versin compartida de MSVCRT.DLL. Otras aplicaciones que instalen diferentes versiones de SA.DLL tampoco afectarn a Wilkinsonpc.exe debido a que este, tiene su versin privada de SA.DLL. Las DLLs privadas, se las denomina tambin DLLs nicas, debido a que utiliza una copia privada de esa DLL en lugar de la genrica. Si ejecutamos por ejemplos WordPad y Wilkinsonpc concurrentemente, dos copias de la MSVCRT.DLL sern cargadas en memoria. Por tanto, como autores de la aplicacin, podramos registrar cada DLL o componente de la aplicacin en el directorio de la aplicacin en donde queremos que resida la copia privada. Existe un segundo mtodo que puede ser utilizado en aplicaciones ya existentes. Supongamos que c:\Wilkinsonpc\Wilkinsonpc.exe es una aplicacin existente y que la queremos proteger de futuras actualizaciones de DLLs o incluso de actualizaciones debidas a los Services Packs. Simplemente copiamos las DLLs que queremos que sean privadas a Wilkinsonpc.exe a la carpeta .\Wilkinsonpc y creamos un archivo vaco en ese directorio llamado Wilkinsonpc.exe.local. De esta manera 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 versin especfica (en nuevas aplicaciones) y .local (en viejas aplicaciones) tienen las siguientes caractersticas:

Los archivos DLL que estn en el directorio de la aplicacin son cargados en lugar de los archivos DLL del sistema, an cuando la funcin "LoadLibrary" de la aplicacin tenga el camino 'hard-coded'. No es posible redirigir la 20 KnownDLLs (conocidas DLLs), que estn 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 quedarn ms restringidas.

Como Agregar / Instalar o Quitar / Desregistrar archivos .dll .ocx? Para agregar ciertos archivos .ocx y/o .dll, abra una ventana de comandos

Curso Superior de Armado y Reparacin de PC

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 travs 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

You might also like