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 PATH
variable de entorno, pero generalmente %windir%\System32
se 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:
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