No Windows, qual é a preferência de como o Windows procura nessas pastas para encontrar .dlls? Por exemplo, se eu tiver duas versões da mesma dll, uma na pasta System 32 e outra no caminho do sistema, onde o Windows olha primeiro?
Responder1
O Windows primeiro procura por "DLLs conhecidas", como Kernel32.dll e User32.dll.
O Windows então procura as DLLs na seguinte sequência:
O diretório do sistema Windows. A função GetSystemDirectory recupera o caminho deste diretório.
O diretório do Windows. A função GetWindowsDirectory recupera o caminho deste diretório.
O diretório onde está localizado o módulo executável do processo atual.
O diretório atual.
Os diretórios listados na variável de ambiente PATH.
Observe que em processos de 32 bits do Windows de 64 bits usam o diretório system32 de 32 bits - não o de 64 bits.
É um pouco diferente antes do SP1 de 2k3 ou XP.
Responder2
Depende da sua PATH
variável de ambiente, mas geralmente %windir%\System32
é adicionada antes do %windir%
.
Usando meu chapéu de desenvolvedor: sempre que possível eu evitaria instalar qualquer coisa em qualquer uma dessas pastas, especialmente para versões recentes de sistemas operacionais com suporte para montagem lado a lado (por exemplo, XP/Vista/2008).
Se você instalou um aplicativo que coloca um .DLL em ambos os lugares, entrarei em contato com o desenvolvedor para corrigi-lo.
Responder3
Dê uma olhada nisso:
http://msdn.microsoft.com/en-us/library/7d83bc18(VS.80).aspx
Observe a mensagem "O pedido foi alterado!" comentário que faz referência a esta página:
Responder4
O carregamento de DLL é feito pela função LoadLibrary da API do Windows e a ordem de pesquisa é descrita na documentação para isso:http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx