Dll en System32 versus ruta del sistema

Dll en System32 versus ruta del sistema

En Windows, ¿cuál es la preferencia de cómo Windows busca en estas carpetas para encontrar archivos .dll? Por ejemplo, si tengo dos versiones del mismo dll, una en la carpeta System 32 y otra en System Path, ¿dónde busca Windows primero?

Respuesta1

Windows primero busca "DLL conocidas", como Kernel32.dll y User32.dll.

Luego, Windows busca las DLL en la siguiente secuencia:

El directorio del sistema de Windows. La función GetSystemDirectory recupera la ruta de este directorio.

El directorio de Windows. La función GetWindowsDirectory recupera la ruta de este directorio.

El directorio donde se encuentra el módulo ejecutable para el proceso actual.

El directorio actual.

Los directorios enumerados en la variable de entorno PATH.

Tenga en cuenta que en Windows de 64 bits, los procesos de 32 bits utilizan el directorio system32 de 32 bits, no el de 64 bits.

Es ligeramente diferente antes de sp1 de 2k3 o XP.

Respuesta2

Depende de su PATHvariable de entorno, pero generalmente %windir%\System32se agrega antes %windir%.

Usando mi sombrero de desarrollador: siempre que sea posible, evitaría instalar nada en cualquiera de estas carpetas, especialmente para las versiones recientes del sistema operativo con soporte de ensamblaje en paralelo (por ejemplo, XP/Vista/2008).

Si instaló una aplicación que coloca un .DLL en ambos lugares, me comunicaría con el desarrollador para solucionarlo.

Respuesta3

Dale una explosión a esto:

http://msdn.microsoft.com/en-us/library/7d83bc18(VS.80).aspx

Tenga en cuenta el mensaje "¡El pedido ha cambiado!" comentario que hace referencia a esta página:

http://msdn.microsoft.com/en-us/library/ms972822.aspx

Respuesta4

La carga de DLL se maneja mediante la función LoadLibrary de la API de Windows y el orden de búsqueda se describe en la documentación correspondiente:http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx

información relacionada